有没有办法在Qt中捕获Dock的调整大小事件?我需要能够检测到何时调整扩展坞的大小(而不仅仅是当它的位置或'功能'发生变化时)。看起来QDockWidget没有'resized'信号。
答案 0 :(得分:8)
如果您不希望继承只是获取调整大小事件控件,您可以installEventFilter
小例子看起来像(MainWindow.h
):( MainWindow在这里持有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);
}