-->

对于码头的Qt resize事件(Qt resize event for docks)

2019-08-17 11:32发布

有没有办法赶在Qt的码头调整事件? 我需要能够检测时,平台被调整(而不是只有当它的位置或“功能”的变化)。 它看起来像有是QDockWidget没有“调整”信号。

Answer 1:

如果你不希望子类只得到调整事件的控制,可以installEventFilter

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


文章来源: Qt resize event for docks