Seite 1 von 1

[gelöst] Welches Event, wenn Widget/Dialog angezeigt wird?

Verfasst: 20. September 2012 16:56
von strangerthandreams
Hiho.

Ich steige gerade in die plattformübergreifende Entwicklung mit Qt ein. Mein Problem ist, dass ich heute lange nach einem Event gesucht habe, was es so offensichtlich nicht gibt.

Nehmen wir mal an, dass ein Dialog beispielsweise komplett gebaut und einsatzbereit ist und dann zur Anzeige gebracht wird als modaler Dialog meinetwegen mit dlgGeilesTeil::exec(). Ich bräuchte ein Event was mir dann mitteilt, dass der Dialog nun sichtbar ist und damit etwas gemacht werden kann.

Das Event showEvent() abzufangen bringt nichts, da es immer dann aufgerufen wird, bevor ein Fenster angezeigt wird. Das ist mir aber zu früh. Ich will etwas automatisiert starten, aber erst dann wenn der Dialog sichtbat ist.

Nun könnte man einen QTimer mit

Code: Alles auswählen

QTimer::singleShot(...)
im Konstruktor nehmen, aber das ist doch nicht gerade schön.

Ich habe auch durch stundenlanges befragen der weltgrößten Suchmaschine nichts dazu finden können. Bei C#/.net gab es immer zwei Events .show und .shown wenn ich mich jetzt irre. So etwas ähnliches muss es hier doch auch geben. Oder wie macht ihr das denn, wenn man eine Art Popup zeigen will, indem ein paar Statusmeldungen die dynamisch generiert und angezeigt werden sollen?

Re: Welches Event, wenn Widget/Dialog angezeigt wird?

Verfasst: 21. September 2012 07:55
von Feuer
Hallo,

du musst einfach setVisible überschreiben:

Code: Alles auswählen

void MainWindow::setVisible(bool visible)
{
    QWidget::setVisible(visible);
    if(visible)
        QMessageBox::information(this,"sichtbar","sichtbar", QMessageBox::Ok);
}
siehe hier:
- http://doc.qt.digia.com/4.7/qwidget.html#visible-prop
- http://doc.qt.digia.com/4.7/qwidget.html#showEvent

Gruß

Re: Welches Event, wenn Widget/Dialog angezeigt wird?

Verfasst: 21. September 2012 11:26
von strangerthandreams
OK Super, vielen Dank. Läuft... :)