Seite 1 von 1
Ein Event an alle Fenster schicken
Verfasst: 26. Januar 2006 18:45
von sascha
Hallo!
Wie kann ich es schaffen, das ich ein Event an alle Fenster schicke?
Sprich ich habe eine Klasse, in der wird "zufällig" ein Event erzeugt... Dieses Event soll nun aber nicht nur ein ein Widget geschickt werden, wie es ja mit
möglich ist, sondern dieses Event soll an alle offenen Fenster meiner Applikation geschickt werden... Ich denke auch das es sinnvoller so ist, da das Event ja eigentlich nciht wissen kann (soll), an wen es geschickt werden soll......
Hat jemand eine Idee??
Re: Ein Event an alle Fenster schicken
Verfasst: 27. Januar 2006 10:53
von macman
Dein Workspace sollte wissen welche Fenster auf sind, schick das Signal dahin und verteil es an die betroffenen Fenster.
Verfasst: 29. Januar 2006 05:23
von ArneStocker
es gibt die Methode QApplication::queryList, die einen Zeiger auf eine Widgetlist mit allen im Speicher vorhandenen Fenstern liefert (also auch die bereits geschlossenen). Dann müsstest Du nur noch prüfen, ob die Fenster 'visible' sind und könntest die Nachricht mit sendEvent (oder asynchron mit postevent) an die Fenster versenden.
Die (durch den Aufruf von QT mit new erzeugte) QWidgetList musst Du anschliessend mit delete löschen
Gruss Arne
Re: Ein Event an alle Fenster schicken
Verfasst: 29. Januar 2006 11:44
von sascha
macman hat geschrieben:Dein Workspace sollte wissen welche Fenster auf sind, schick das Signal dahin und verteil es an die betroffenen Fenster.
Was meinst Du damit?
Soll das heißen, dass es unter C++ Standard ist, dass sich mein MainWindow merkt, welche Dialoge er besitzt und welche davon geöffnet sind und welche nicht?
Re: Ein Event an alle Fenster schicken
Verfasst: 30. Januar 2006 07:20
von macman
sascha hat geschrieben:Soll das heißen, dass es unter C++ Standard ist, dass sich mein MainWindow merkt, welche Dialoge er besitzt und welche davon geöffnet sind und welche nicht?
Nein, natürlich nicht, das mußt Du schon selbst managen. Guck dir mal das MDI-Beispiel an, dann wird es vielleicht klarer.