QMessageBox::Ok schließt das ganze Programm
QMessageBox::Ok schließt das ganze Programm
Hallo zusammen,
Hoffe, das Thema wurde noch nicht behandelt, mit der Suche konnte ich es jedenfalls nicht finden.
Ich entwickle mit Qt 3.3.5 ein Tool, mit dem ich auf Chipkarten die PIN wechseln kann. (WinXP SP2)
Das Tool an sich funktioniert wunderbar, in einem zusätzlichen Thread werden die Kartenleser auf Änderungen überwacht (ob Karte gesteckt, gezogen, ungültig, usw.). Je nach Zustand aktivieren oder deaktivieren sich Teile des GUIs.
Steckt zu Programmbeginn eine Karte im Leser, bekomme ich eine Nachricht mit einer QMessageBox, welche mich darauf hinweist, dass die Karte noch nicht benutzt wurde und ich eine Werks-PIN eingeben muss. So solls auch sein. Diese MessageBox kann ich auch wunderbar wegklicken, wie es sein muss.
Steckt nun aber zum Programmbeginn noch keine Karte und ich stecke die Karte während des Betriebs, springt mein Thread darauf an, sendet ein entsprechendes Signal und gibt mir die richtige MessageBox. Klicke ich aber bei dieser auf Ok, schließt sich das Programm ohne jegliche Fehlermeldung. Das Kompilieren funktionierte zuvor auch ohne jegliche Fehler.
Ich sitze an dem Problem nun schon mehrere Tage und weiß nicht mehr weiter.
Gibt es da einen bekannten Bug oder liegt der Fehler eher in meinem Code?
Falls ich Code posten soll, sagt mir, welchen Teil. Am Aufruf der MessageBox kanns nicht liegen, da kann man ja nicht viel falsch machen.
Vielen Dank im Voraus!
JOHANNES
Hoffe, das Thema wurde noch nicht behandelt, mit der Suche konnte ich es jedenfalls nicht finden.
Ich entwickle mit Qt 3.3.5 ein Tool, mit dem ich auf Chipkarten die PIN wechseln kann. (WinXP SP2)
Das Tool an sich funktioniert wunderbar, in einem zusätzlichen Thread werden die Kartenleser auf Änderungen überwacht (ob Karte gesteckt, gezogen, ungültig, usw.). Je nach Zustand aktivieren oder deaktivieren sich Teile des GUIs.
Steckt zu Programmbeginn eine Karte im Leser, bekomme ich eine Nachricht mit einer QMessageBox, welche mich darauf hinweist, dass die Karte noch nicht benutzt wurde und ich eine Werks-PIN eingeben muss. So solls auch sein. Diese MessageBox kann ich auch wunderbar wegklicken, wie es sein muss.
Steckt nun aber zum Programmbeginn noch keine Karte und ich stecke die Karte während des Betriebs, springt mein Thread darauf an, sendet ein entsprechendes Signal und gibt mir die richtige MessageBox. Klicke ich aber bei dieser auf Ok, schließt sich das Programm ohne jegliche Fehlermeldung. Das Kompilieren funktionierte zuvor auch ohne jegliche Fehler.
Ich sitze an dem Problem nun schon mehrere Tage und weiß nicht mehr weiter.
Gibt es da einen bekannten Bug oder liegt der Fehler eher in meinem Code?
Falls ich Code posten soll, sagt mir, welchen Teil. Am Aufruf der MessageBox kanns nicht liegen, da kann man ja nicht viel falsch machen.
Vielen Dank im Voraus!
JOHANNES
Zuletzt geändert von Johannes am 29. Mai 2006 09:56, insgesamt 1-mal geändert.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Das musst du das Hauptprogramm fragen. Dort einen Breakpoint und schauen was passiert.Johannes hat geschrieben: Kann es sein, dass das Hauptprogramm, den Rückgabewert der MessageBox so interpretiert, dass das Hauptprogramm geschlossen wird?
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
-
Querdenker
- Beiträge: 99
- Registriert: 1. Dezember 2005 17:44
- Wohnort: Karlsruhe
Hi,
das liegt in main() und in QApplication. Die QMessageBox ist zwar ein Dialog, wird aber von QApplication wie ein MainWidget behandelt wenn es das einzigste Window war.
Wird es geschlossen, so notiert QApplication das beenden des letzten Window und beendet die App.
Diese Eigenschaft lässt sich aber mit einem bool abstellen.
quitOnLastWindowClosed(false);
das liegt in main() und in QApplication. Die QMessageBox ist zwar ein Dialog, wird aber von QApplication wie ein MainWidget behandelt wenn es das einzigste Window war.
Wird es geschlossen, so notiert QApplication das beenden des letzten Window und beendet die App.
Diese Eigenschaft lässt sich aber mit einem bool abstellen.
quitOnLastWindowClosed(false);
e Grüssle au
Q...
Q...
-
Querdenker
- Beiträge: 99
- Registriert: 1. Dezember 2005 17:44
- Wohnort: Karlsruhe