2013-03-11 76 views
3

有沒有辦法在Qt中捕捉docks的resize事件?我需要能夠檢測碼頭何時調整大小(而不僅僅是當它的位置或「特徵」改變時)。看起來QDockWidget沒有「調整大小」的信號。Qt resize event for docks

回答

6

如果你不希望子類只得到調整事件的控制,可以installEventFilter

小例子看起來像(MainWindow.h):(主窗口持有DockWidget這裏)

protected: 
    bool eventFilter(QObject *obj, QEvent *event); 

和( MainWindow.cc):

MainWindow::MainWindow(QWidget* parent) 
    : QWidget(parent) { 
    ui_.setupUi(this); 
    ui_.dockWidget->installEventFilter(this); 
} 

bool MainWindow::eventFilter(QObject *obj, QEvent *event) { 
    if (event->type() == QEvent::Resize && obj == ui_.dockWidget) { 
     QResizeEvent *resizeEvent = static_cast<QResizeEvent*>(event); 
     qDebug("Dock Resized (New Size) - Width: %d Height: %d", 
      resizeEvent->size().width(), 
      resizeEvent->size().height()); 
    } 
    return QWidget::eventFilter(obj, event); 
} 
+0

謝謝,這作品! – 2013-03-11 10:31:06

相關問題