5

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

4

1 回答 1

10

如果您不希望子类化以获得调整事件控制,您可以安装EventFilter

小例子看起来像(MainWindow.h):(MainWindow 持有 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);
}
于 2013-03-11T07:55:44.263 回答