QDockWidget slidend einblenden
Verfasst: 27. August 2010 09:52
Hallo,
ich gestalte derzeit eine GUI, die in der Mitte als CentralWidget eine graphische Anzeige hat. Rundherum liegen derzeit 3 DockWidgets. Klickt man im Menü auf eine Schaltfläche "ausblenden", so bewegen sich die DockWidgets langsam aus dem Bild und verschwinden dann. Das habe ich folgendermaßen implementiert:
Configuration ist das DockWidget (es darf nur rechts oder links "angedogt" werden),
animateConfig ist eine QPropertyAnimation,
actionConfiguration ist der Menüeintrag
Mein Problem ist jetzt folgendes: Ich möchte gerne beim Einblenden des Dockwidgets (per Klick auf die Schaltfläche im Menü) den gleichen Effekt erzielen, bekomme es jedoch nicht hin. Ich habe bereits versucht, erst Configuration->show() aufzurufen, wodurch das Widget direkt "angedockt" wird und an der endgültigen Position erscheint, es dann mit "move" wieder ausserhalb des sichtbaren Bereichs zu verschieben und erst dann eine "rückläufige" Animation zur obigen zu starten. Leider funktioniert dies nicht, da das Widget immer direkt an der Endposition erscheint.
Kann mir jemand helfen?
Vielen Dank für eure Beiträge!
Unneli
ich gestalte derzeit eine GUI, die in der Mitte als CentralWidget eine graphische Anzeige hat. Rundherum liegen derzeit 3 DockWidgets. Klickt man im Menü auf eine Schaltfläche "ausblenden", so bewegen sich die DockWidgets langsam aus dem Bild und verschwinden dann. Das habe ich folgendermaßen implementiert:
Code: Alles auswählen
int x = ui->Configurations->pos().x();
int y = ui->Configurations->pos().y();
int w = ui->Configurations->width();;
int h = ui->Configurations->height();
if(dockWidgetArea(ui->Configurations) == Qt::LeftDockWidgetArea)
w *= -1;
animateConfig->setKeyValueAt(0, QRect(x, y, w, h));
animateConfig->setKeyValueAt(1, QRect(x+w, y, w, h));
animateConfig->start();
ui->actionConfiguration->setText(tr("Show Configuration"));
QTimer::singleShot(500, ui->Configurations, SLOT(hide()));animateConfig ist eine QPropertyAnimation,
actionConfiguration ist der Menüeintrag
Mein Problem ist jetzt folgendes: Ich möchte gerne beim Einblenden des Dockwidgets (per Klick auf die Schaltfläche im Menü) den gleichen Effekt erzielen, bekomme es jedoch nicht hin. Ich habe bereits versucht, erst Configuration->show() aufzurufen, wodurch das Widget direkt "angedockt" wird und an der endgültigen Position erscheint, es dann mit "move" wieder ausserhalb des sichtbaren Bereichs zu verschieben und erst dann eine "rückläufige" Animation zur obigen zu starten. Leider funktioniert dies nicht, da das Widget immer direkt an der Endposition erscheint.
Kann mir jemand helfen?
Vielen Dank für eure Beiträge!
Unneli