Seite 1 von 1

[gelöst] Eigene EventLoop für QMainWindow ?

Verfasst: 1. September 2007 15:46
von comer352l
Hallo,

ich möchte in meinem Programm an einigen Stellen processEvents() aufrufen, damit die GUI-Elemente ohne Verzögerung (zu Ende) gezeichnet werden können.
Die Programmstruktur besteht im Augenblick aus einer QApplication, sowie einer Reihe von QMainWindows, welche teilweise weitere QMainWindows erzeugen/beinhalten (was wenn möglich auch so bleiben soll).

Wenn ich das richtig sehe, dann besitzt QMainWindow keine eigene Event-Loop, sämtliche Events laufen also in der EventLoop von QApplication, richtig ? Um per processEvents() darauf zugreifen zu können müsste ich also jeweils einen Pointer auf die zugrundeliegende QApplication an die QMainWindows übergeben.
Meine zweite Idee wäre, die QMainWindows durch Erben von QEventLoop mit eigenen EventLoops auszustatten. Ist das möglich bzw. überhaupt empfehlenswert ?

Verfasst: 1. September 2007 17:07
von Christian81
Abgesehen davon dass Du eine ziemlich verwirrende Vorstellung davon hast was eine Eventloop so macht und wofür sie nötig ist würde ich einfach mal sagen dass QApplication::processEvents() nicht umsonst eine statische Funktion ist...

Verfasst: 2. September 2007 11:25
von comer352l
Aua, das "Static" war mir doch glatt entgangen... :oops:
Wie's aussieht, haben sich damit zumindest schon mal einige meiner Performance-Probleme erledigt...

Was mein Verständnis der Event-Loop angeht, hast du ebenfalls nicht ganz unrecht: zumindest die Abläufe hinter den Kulissen sind mir noch ein ziemliches Rätsel. Woher bzw. wie findet z.B. die statische Funktion processEvents() den Weg zu (richtigen !) Event-Loop ???

Danke schon mal !

Verfasst: 2. September 2007 11:54
von Christian81
Das es nur eine Eventloop (pro Thread) gibt, sehe ich keine Probleme :)

Verfasst: 2. September 2007 16:31
von comer352l
Mhh ok, das war mir so nicht klar. Ist aber bei genauerem Nachdenken eigentlich auch logisch...

Leider habe ich noch immer an einigen Stellen Probleme mit zu langsamer bzw. verzögerter GUI-Darstellung zu kämpfen...
Ich denke aber ich werde nochmal ausführlich die Suchfunktion benutzen und evtl. einen neuen Thread aufmachen.

Danke !