QAppliction::exec() "aufsägen"
-
Hallo,
ich bastel gerade an einem kleinen Spielchen, um ein bisselchen mit Plattformunabhängigem Design zu spielen. Ich hab bisher die Konsolen, MFC und WinApi - Varianten Fertig,
Nun hänge ich unter Linux bei der QT Implementierung. Um überhaupt mit QT ein Anzeigefenster zu bekommen muß ich ja eine QApplication - Instanz erstellen und dort mein Hauptfenster einklinken mittelsm_pApp->setMainWidget( m_pTheMainWidget );
wenn ich dann aber m_pApp->exec() starte häng er ja in dieser Loop fest -> meine Game - loop soll ja aber in dieser mit drin hängen. In der MFC hab ich das dann einfach so gelöst:
1.) Fenster kreieren
2.) MessageLoop "selber" starten und Messages in der Gameloop mittels
PeekMessage abholen.Ich will halt möglichst wenig Code bei der Portierung in den Dialog verlagern. Ich benutze auch nicht das MVC - Modell, sondern schreibe für die jeweilige Implementierung einen Wrapper für die wenigen wirklich Plattformabhängigen Funktionen.
Vielen Dank,
Tobias
-
Guck mal ob es da sowas wie QApplication::OnIdle gibt. Dort müsste dein Game-Zeug hin.
-
nene, so einfach geht das nu auch wieder nich
Ich will mich ja gerade "von außen" einhängen, um meinen Code schön aus dem QT - Code rauszuhalten.
Außerdem brauch Ich meine Mainloop noch, um auch aif Konsole portieren zu können. Ich hab gerade 'nen neuen Ansatz und pack den ganzen exec() - Krempel in einen eigenen Thread - 'ma schauen was daraus wird...
-
wer hat denn behauptet, dass du exec überhaupt aufrufen musst
void QApplication::processEvents ( int maxtime ) void QApplication::processOneEvent () virtual bool macEventFilter ( EventHandlerCallRef, EventRef ) virtual bool winEventFilter ( MSG * ) virtual bool x11EventFilter ( XEvent * )
du kannst dir doch einfach deinen loop bauen und wenn dein programm lust hat processEvents aufrufen
alternativen sind noch z.b. spielereien mit
-qtimer
-qdialog::execfalls dus genauer wissen willst musst du deinen aufbau und die art der kommunikation zwischen fenster und spiel erklärn
-
Ja, das sieht in etwa nach dem aus, was ich brauche. Hast du außer der QT-Doku eine gute Quelle? Möglichst nicht in Buchform, da für mich Qt nicht so wichtig ist, dafür auch noch Geld auszugeben.
Oder giebt es in der QT - Doku besonders lesenswerte Abschnitte die ich noch nicht gefunden habe?Erstmal Danke, das löst (eventuell) schonmal mein Problem.
-
meine beste quelle neben der doku is http://www.qtforum.org