Qt调整停靠区大小事件

5

有没有一种方法可以在Qt中捕获窗口停靠区域的大小调整事件? 我需要能够检测到停靠区域的大小调整(不仅仅是位置或“特性”发生变化时)。 看起来QDockWidget没有“调整大小”信号。

1个回答

10

如果您不想创建子类来仅仅获得调整大小事件的控制权,则可以使用installEventFilter

一个小例子如下(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);
}

如果我想要子类化,重写 void resizeEvent(QResizeEvent * event) override; 就可以了吗? - Dávid Tóth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接