Eigene Methode über QStackWidget aufrufen

Alles rund um die Programmierung mit Qt
Antworten
101
Beiträge: 72
Registriert: 16. Januar 2008 16:28

Eigene Methode über QStackWidget aufrufen

Beitrag 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?
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag 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.
101
Beiträge: 72
Registriert: 16. Januar 2008 16:28

Beitrag 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).
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag 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.
101
Beiträge: 72
Registriert: 16. Januar 2008 16:28

Beitrag 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!
Antworten