Signal nach app.exec() ??

Alles rund um die Programmierung mit Qt
Antworten
Sirhc
Beiträge: 4
Registriert: 11. August 2006 12:14

Signal nach app.exec() ??

Beitrag von Sirhc »

Hallo!
Ich habe folgende Frage, zu der ich inzwischen schon 1 1/2 tage google:

Mein Qt-Programm (QT vers 3.2) habe ich mit dem Designer erstellt und die Funktionalitiät in die *.ui.h - Datei gepackt. Da das Programm jetzt fast fertig ist, ist mir die Umstellung auf den Vererbungsansatz nun zu aufwendig.

Nun möchte ich nach der Erstellung des Dialoges, also nach Aufruf von app.exec() code ausführen, wenn ein bestimmter Parameter, den ich über argv() abfrage, mitgegeben wurde. Dieser Code beinhaltet eine "Endlosschleife" (bis ein button gedrückt wird), so daß er wenn er vor Aufruf der app.exec() ausgeführt würde diesen Aufruf blockierte.

Wo muß dieser Code hin?

Meine bisherigen Versuche haben sich mit der init() in der ui.h-Datei beschäftigt, doch wird die init ja bereits vor app.exec() ausgeführt -> daher leifert das Programm dann einen Fehler zur Laufzeit.

Wie muß ich das anders machen?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Versuch's mal mit einem Event...
Sirhc
Beiträge: 4
Registriert: 11. August 2006 12:14

Beitrag von Sirhc »

Ja... nur weiß ich nicht und habe auch nach sehr langer Suche nicht herausfinden können, welches event ausgelöst wird, wenn exec() gestartet ist.
Ich habe das inzwischen etwas unschön gelöst, indem ich ein QTimer::singleShot in die init gesetzt habe - jetzt starte ich mein Program halt etwas zeitverzögert und etwas "dirty", aber es tut...
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

So etwas in der Richtung meinte ich. Den Timer kannst du im übrigen auf 0 setzen.
Sirhc
Beiträge: 4
Registriert: 11. August 2006 12:14

Beitrag von Sirhc »

Ja mit 0 klappt das auch... warum? Muß ich ihm keine Zeit geben, die Oberfläche aufzubauen und anzuzeigen?
Einmaliger
Beiträge: 48
Registriert: 22. Juli 2006 11:42

Beitrag von Einmaliger »

Sirhc hat geschrieben:Ja mit 0 klappt das auch... warum? Muß ich ihm keine Zeit geben, die Oberfläche aufzubauen und anzuzeigen?
Aus der Qt-Dokumentation zu QTimer:
As a special case, a QTimer with a timeout of 0 will time out as soon as all the events in the window system's event queue have been processed. This can be used to do heavy work while providing a snappy user interface
Er wartet also ab, bis alle GUI-Events (also insbesondere PaintEvents) abgeschlossen sind, und löst dann direkt den Timer aus.
Sirhc
Beiträge: 4
Registriert: 11. August 2006 12:14

Beitrag von Sirhc »

Perfekt!!!!
Genau das hatte ich ja gesucht!
Vielen Dank!
Von meiner Seite aus kann man diesen Thread als Solved o.ä. abschließen :-)
Antworten