Kann man die QT Gui draw loop extrahieren?

Alles rund um die Programmierung mit Qt
Antworten
Seikilos
Beiträge: 34
Registriert: 9. Juni 2009 06:43

Kann man die QT Gui draw loop extrahieren?

Beitrag 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?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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...
Seikilos
Beiträge: 34
Registriert: 9. Juni 2009 06:43

Beitrag von Seikilos »

Weil das der einfachste Weg ist, Boost::Test zu nutzen.

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