QDockWidget slidend einblenden

Alles rund um die Programmierung mit Qt
Antworten
Unneli
Beiträge: 8
Registriert: 26. August 2010 09:02

QDockWidget slidend einblenden

Beitrag 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
Unneli
Beiträge: 8
Registriert: 26. August 2010 09:02

keine Antwort

Beitrag von Unneli »

Anscheinend ist meine Frage ja sehr schwierig... oder zu simpel... über 70 Leute gucken und keiner kann/will helfen :(
softwaremaker
Beiträge: 149
Registriert: 1. April 2009 19:25

grabWidget

Beitrag 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.
Unneli
Beiträge: 8
Registriert: 26. August 2010 09:02

Beitrag von Unneli »

aaaah :) ja das klingt gut. danke!!!
Antworten