码头的Qt调整大小事件

问题描述:

有没有一种方法可以捕获Qt中停靠站的调整大小事件?我需要能够检测坞站何时调整大小(不仅是其位置或功能"更改时).看来QDockWidget没有调整大小"信号.

Is there a way to catch resize events for docks in Qt? I need to be able to detect when a dock is resized (and not only when its location or 'features' change). It looks like there is no 'resized' signal for QDockWidget.

如果您不希望仅继承子类来获得调整大小的事件控制,则可以

If you do not wish to subclass to just get resize event control, you can installEventFilter

小例子看起来像(MainWindow.h):(MainWindow在此处保存DockWidget)

Small example would look like (MainWindow.h): (MainWindow holds DockWidget Here)

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);
}