5

Qtのドックのサイズ変更イベントをキャッチする方法はありますか?ドックのサイズが変更されたとき(場所や「機能」が変更されたときだけでなく)を検出できる必要があります。QDockWidgetの「サイズ変更された」信号がないようです。

4

1 に答える 1

10

サブクラス化してサイズ変更イベント コントロールを取得したくない場合は、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);
}
于 2013-03-11T07:55:44.263 に答える