Seite 1 von 1

QDockWidget slidend einblenden

Verfasst: 27. August 2010 09:52
von Unneli
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:

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()));
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

keine Antwort

Verfasst: 1. September 2010 09:25
von Unneli
Anscheinend ist meine Frage ja sehr schwierig... oder zu simpel... über 70 Leute gucken und keiner kann/will helfen :(

grabWidget

Verfasst: 1. September 2010 10:57
von softwaremaker
Viele geben sich wahrscheinlich mit der normalen DockWidget-Funktionalität zufrieden und haben das sliden noch nicht gebraucht.

Da dein Dockwidget sicherlicht ein /mehrere Controls enthält und dieses einen gewissen Platz anfordert, ist das resizen auf sehr kleine Größen sicherlich problematisch.

Ich würde ein Bild vom DockWidget erstellen (QPixmap::grabWidget) und die Controls des DockWidgets ausblenden (QWidget::hide) und das Bild dann einblenden, dann das DockWidget sliden und dabei das Bild verkleinern/abschneiden.

Verfasst: 1. September 2010 12:37
von Unneli
aaaah :) ja das klingt gut. danke!!!