Seite 1 von 1

Kann man die QT Gui draw loop extrahieren?

Verfasst: 24. Dezember 2009 10:09
von Seikilos
Ich weiß, das man in der Regel eine Klase haben muss, um ein Fenster zu erzeugen. Das ist das gängige Prozedere für unsere Anwendung.

Nun habe ich aber einen anderen Fall, wo ich defakto nur eine Main und eine Methode habe. Ist es möglich die draw loop von QT in einer Methode zu nutzen, wie bei SDL oder Freeglut?

Beispielsweise:

Code: Alles auswählen

int main()
{
  qt=createQTWindow();
  meineFunktion(qt);
}

void meineFunction(T qt)
{
   while(true)
   {
      qt.draw();
      eigenerCode();
   }
}
Mir ist die falsche Reihenfolge der beiden Methoden bewusst,aber ist ja nur democode.

Bei QT läuft das ja in der Regel anders ab, dort gibt es ein Inversion of Controll, die Anwendung ruft eine vom Benutzer implementierte draw Methode auf usw. Ich muss es aber umgekehrt machen, ich muss den draw initialisieren. meineFunktion darf nicht irgendein Callback oder Handler für das QT Window sein.

Kann man solch ein Verhalten mit QT hinbekommen?

Verfasst: 24. Dezember 2009 11:10
von franzf
Dass du ein Qt-Widget anzeigen kannst brauchst du
1) Eine Instanz einer QApplication
2) Eine laufende Eventloop. ->QApplication::exec()
Sonst geht da gar nix.
Was du mit deinem Vorgehen bezweckst ist mir nicht klar.
Ein eigenes Widget implementiert man IMMER in einer Klasse, sonst gibts keine SIGNALS/SLOTS, und ohne Eventhandling ist eine Gui-Anwendung witzlos.

Wieso "hast du nur eine main und eine methode"? DU schreibst den Code, DU hast das in der Hand...

Verfasst: 24. Dezember 2009 14:58
von Seikilos
Weil das der einfachste Weg ist, Boost::Test zu nutzen.

(Vorsichtshalber: Nein QtTest will ich nicht nutzen, ist kein Vergleich mit Boost)