Qt调整码头大小的事件

时间:2013-03-11 05:36:55

标签: qt resize signals dock qdockwidget

有没有办法在Qt中捕获Dock的调整大小事件?我需要能够检测到何时调整扩展坞的大小(而不仅仅是当它的位置或'功能'发生变化时)。看起来QDockWidget没有'resized'信号。

1 个答案:

答案 0 :(得分:8)

如果您不希望继承只是获取调整大小事件控件,您可以installEventFilter

小例子看起来像(MainWindow.h):( MainWindow在这里持有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);
}