2013-03-11 2 views
3

Existe-t-il un moyen d'attraper des événements de redimensionnement pour les quais dans Qt? Je dois être capable de détecter quand un dock est redimensionné (et pas seulement quand son emplacement ou ses 'caractéristiques' changent). Il semble qu'il n'y ait pas de signal "redimensionné" pour QDockWidget.Qt événement de redimensionnement pour les docks

Répondre

6

Si vous ne souhaitez pas sous-classe pour obtenir juste redimensionner le contrôle des événements, vous pouvez installEventFilter

Petit exemple ressemblerait (MainWindow.h): (MainWindow détient DockWidget ici)

protected: 
    bool eventFilter(QObject *obj, QEvent *event); 

et (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); 
} 
+0

Merci, ça marche! –

Questions connexes