2013-03-11 47 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

相关问题