Functionsausführung direkt nach dialog.show()
-
horst böhse
- Beiträge: 8
- Registriert: 16. August 2005 16:17
Functionsausführung direkt nach dialog.show()
Hallo zusammen!!
Ich versuche krampfhaft, in QT eine Möglichkeit zu finden,
dass eine Funktion unmittelbar nach sichtbarwerden des Dialogs
ausgeführt wird.
showEvent z.B wird immer davor ausgeführt und ein passendes SIGNAL hab ich auch nicht gefunden.
Kann mir da jemand helfen?
Schonmal Danke
Ich versuche krampfhaft, in QT eine Möglichkeit zu finden,
dass eine Funktion unmittelbar nach sichtbarwerden des Dialogs
ausgeführt wird.
showEvent z.B wird immer davor ausgeführt und ein passendes SIGNAL hab ich auch nicht gefunden.
Kann mir da jemand helfen?
Schonmal Danke
-
horst böhse
- Beiträge: 8
- Registriert: 16. August 2005 16:17
Danke erstmal!
Das Problem an polish() ist: Es wird ausgeführt, bevor der Dialog gezeigt wird!
Ich möchte aber in dieser Funktion Anfangsinitialisierungen vornehmen, deren Status man im Dialogfenster sehen kann.
Das kann ich mit dieser Funktion leider auch nicht machen!
Vielleicht hat ja noch jemand einen anderen Vorschlag.
Danke
Das Problem an polish() ist: Es wird ausgeführt, bevor der Dialog gezeigt wird!
Ich möchte aber in dieser Funktion Anfangsinitialisierungen vornehmen, deren Status man im Dialogfenster sehen kann.
Das kann ich mit dieser Funktion leider auch nicht machen!
Vielleicht hat ja noch jemand einen anderen Vorschlag.
Danke
Ok, dann hab ich das falsch verstanden .....
muss das fenster unbedingt modal sein ?
Vielleicht die Paint Methode abfangen ....
binit natuerlich mit alse initialisieren 
funktioniert das ?
Hab das eigentlich noch nie gebraucht ... wenn nen Dialog aufpoppt, sollt man sofort drin rumschreiben koennen ... man braucht die initialization kaum sichtbar ....
Oder es handelt sich um nen Progressdialog, der iss auch ganz anders aufgebaut ....
Ciao ...
muss das fenster unbedingt modal sein ?
Vielleicht die Paint Methode abfangen ....
Code: Alles auswählen
virtual MyDialog::paintEvent ( QPaintEvent * pEvent )
{
QDialog::paintEvent(pEvent);
if(!binit )
{
OnShow(); // eigene OnShow Aufrufen
binit = true;
}
}
funktioniert das ?
Hab das eigentlich noch nie gebraucht ... wenn nen Dialog aufpoppt, sollt man sofort drin rumschreiben koennen ... man braucht die initialization kaum sichtbar ....
Oder es handelt sich um nen Progressdialog, der iss auch ganz anders aufgebaut ....
Ciao ...
-
Flachkoepper
- Beiträge: 149
- Registriert: 11. Januar 2005 12:14
- Wohnort: Hannover
-
horst böhse
- Beiträge: 8
- Registriert: 16. August 2005 16:17
Mit showEvent hab ich das schon probiert, wird bei mir aber auch kurz davor ausgeführt!
Hab es jetzt ganz anders realisiert, indem ich beim Instanzieren meiner Dialogklasse den Parameter Modal auf false gesetzt habe, so dass qt nicht schon beim aufruf von show() in die Ereignisschleife geht, sonder erst bei app.exec().
Meine Funktion hab ich dann quasi zwischen die Aufrufe dieser beiden gesteckt, so funzt es.
Ich bedanke mich aber trotzdem für die Beiträge.
Allerdings tritt jetzt ein neues Problem auf.
Mein TextView-Widget wird während der Ausführung dieser Funktion
nicht aktualisiert.
Der Titel meines Dialogs aber schon! Hab zum testen ein paar Sleeps
eingebaut.
update() und repaint() hat auch nicht geholfen
Hab es jetzt ganz anders realisiert, indem ich beim Instanzieren meiner Dialogklasse den Parameter Modal auf false gesetzt habe, so dass qt nicht schon beim aufruf von show() in die Ereignisschleife geht, sonder erst bei app.exec().
Meine Funktion hab ich dann quasi zwischen die Aufrufe dieser beiden gesteckt, so funzt es.
Ich bedanke mich aber trotzdem für die Beiträge.
Allerdings tritt jetzt ein neues Problem auf.
Mein TextView-Widget wird während der Ausführung dieser Funktion
nicht aktualisiert.
Der Titel meines Dialogs aber schon! Hab zum testen ein paar Sleeps
eingebaut.
update() und repaint() hat auch nicht geholfen
Code: Alles auswählen
Sleep(1000);
TextView_Status->setText("1");
update();
Sleep(1000);
TextView_Status->setText("2");
update();-
ArneStocker
- Beiträge: 300
- Registriert: 3. November 2004 16:15
- Wohnort: Berlin
Hi
sleep() wird da wohl nicht helfen. Du müsstest wohl den eventloop laufen lassen etwa mit qApp->processEvents(100) oder so. Damit gibst Du QT die Gelegenheit, einige events abzuarbeiten. Es gibt über die Klasse QEventloop auch die Möglichkeit, (bestimmte) zwischenzeitliche Benutzereingabe auszuschliessen.
Gruss Arne
PS.: Ein modaler Dialog hat glaube ich einen eigenen Eventloop, allerdings weiss ich nicht wie man an den rankommt. Die o.g. Möglichkeit funktioniert aber, d.h. wenn Du die Benutzereingabe ausschliesst.
sleep() wird da wohl nicht helfen. Du müsstest wohl den eventloop laufen lassen etwa mit qApp->processEvents(100) oder so. Damit gibst Du QT die Gelegenheit, einige events abzuarbeiten. Es gibt über die Klasse QEventloop auch die Möglichkeit, (bestimmte) zwischenzeitliche Benutzereingabe auszuschliessen.
Gruss Arne
PS.: Ein modaler Dialog hat glaube ich einen eigenen Eventloop, allerdings weiss ich nicht wie man an den rankommt. Die o.g. Möglichkeit funktioniert aber, d.h. wenn Du die Benutzereingabe ausschliesst.
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
-
ArneStocker
- Beiträge: 300
- Registriert: 3. November 2004 16:15
- Wohnort: Berlin