Seite 1 von 1

Eigene Methode über QStackWidget aufrufen

Verfasst: 13. Juni 2009 17:30
von 101
Hallo, ich habe wahrscheinlich ein kleines Konzeptproblem, bei dem ich Hilfe bräuchte.

Ich habe diverse eigene Klassen, welche von QWidget abgeleitet sind, die von einem zentralen StackWidgets verwaltet werden. Ich habe in den eigenen Widget Klassen eine Methode zum Updaten der Inhalte der Widgets geschrieben (UpdateView()), welche auch in allen Widgets vorhanden ist.
Diese Methode möchte ich in der MainWindow Anwendung zyklisch aufrufen. Mein Problem: meine eigene Methode ist nicht bekannt, da sie kein bestandteil von QWidget ist. Somit ist das aufrufen über das Stack Widget nicht möglich (currentWidget()->UpdateView()).

Ein ObjectCast mit der eigenen Klasse ist auch nicht möglich, da die eigenen "Widget Klassen" von unterschiedlichen Typ sind.

Kann mir jemand einen Tip geben, wie ich das Problem lösen kann?

Verfasst: 13. Juni 2009 17:37
von Mani99
Du erstellst doch eine eigene instanz eines jeden widgets oder? Wenn ja, dann starte doch in jedem widget im konstruktor einen timer der alle paar sekunden/minuten/etc. das update durchführt.

Verfasst: 13. Juni 2009 19:19
von 101
Danke für die Antwort,

dies wäre eine Variante, aber ich wollte nur das Widget updaten, welches aktuell angeizeigt wird (zwecks Perfomance).

Verfasst: 13. Juni 2009 19:54
von Mani99
Event. hilft dir isActiveWindow weiter?

http://doc.qtsoftware.com/4.5/qwidget.h ... indow-prop wenns das widget das aktive ist, timer starten, sonst timer anhalten.

Verfasst: 13. Juni 2009 22:01
von 101
Mit isActiveWindow() funktioniert das Ganze nicht, da es für alle Widgets im StackWidget true ist. Mit isVisible() funktioniert es ;o).

Vielen Danke für den Wink!