Qt调整码头大小的事件

J. *_* V. 5 qt signals resize dock qdockwidget

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

Viv*_*Viv 9

如果您不希望子类只是获取resize事件控件,则可以installEventFilter

小例子看起来像(MainWindow.h):( MainWindow在这里持有DockWidget)

protected:
  bool eventFilter(QObject *obj, QEvent *event);
Run Code Online (Sandbox Code Playgroud)

和in(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);
}
Run Code Online (Sandbox Code Playgroud)