有没有一种方法可以在Qt中捕获窗口停靠区域的大小调整事件? 我需要能够检测到停靠区域的大小调整(不仅仅是位置或“特性”发生变化时)。 看起来QDockWidget没有“调整大小”信号。
有没有一种方法可以在Qt中捕获窗口停靠区域的大小调整事件? 我需要能够检测到停靠区域的大小调整(不仅仅是位置或“特性”发生变化时)。 看起来QDockWidget没有“调整大小”信号。
如果您不想创建子类来仅仅获得调整大小事件的控制权,则可以使用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