Hallo,
ich habe eine Software geschrieben, die von einem Server über das Netzwerk gesteuert wird und einzelne Widgets des Clients beenden und starten kann.
Wenn der Client nun dem Nutzer aber einen modalen Dialog (MessageBox) zeigt und nun der Server zur gleichen Zeit das Parent-Widget schließt, hängt sich der Client auf.
Gibt es eine Möglichkeit, den geöffneten modalen Dialog zu erkennen und zu beenden, bevor das eigentliche Widget gelöscht wird?
Vielen Dank für eure Antworten.
Modalen Dialog von "innen heraus" beenden
-
oberschlingel
- Beiträge: 85
- Registriert: 11. April 2006 09:25
- Wohnort: Berlin
Re: Modalen Dialog von "innen heraus" beenden
Wo denn genau(Code)?oberschlingel hat geschrieben:[...]hängt sich der Client auf.[...]
-
oberschlingel
- Beiträge: 85
- Registriert: 11. April 2006 09:25
- Wohnort: Berlin
Sorry für die späte Antwort.
Der Code sieht so aus:
In einem Widget (angezeigt in einem QStackedWidget eines QMainWindow) wird per MessageBox etwas gefragt:
Wenn nun das QMainWindow vom Netzwerk (QTcp) eine bestimmte Nachricht bekommt, soll es das Widget oben beenden:
Das Beenden des Widgets funktioniert wunderbar. Wenn allerdings die modale QMessageBox gerade geöffnet ist während das QMainWindow das Widget löschen will, hängt sich die Software auf.
Kennt jemand eine Lösung? Wie kann ich die modale MessageBox von "innen heraus" beenden, bevor das Widget selbst gelöscht wird?
DANKE!
Der Code sieht so aus:
In einem Widget (angezeigt in einem QStackedWidget eines QMainWindow) wird per MessageBox etwas gefragt:
Code: Alles auswählen
void testWidget::showMessage() {
if (isStarted) {
switch (QMessageBox::question(this, APP_NAME,
tr("Wollen Sie das und das tun?"), tr("&Ja"), tr("&Abbrechen"),
0, 1)) {
case 1:
flag = false;
return;
}
}
}
Code: Alles auswählen
MainWindow::getMessage(QString message) {
if (message == "test") {
stackedWidget->removeWidget(testWidget);
disconnect(...);
delete testWidget;
}
}Das Beenden des Widgets funktioniert wunderbar. Wenn allerdings die modale QMessageBox gerade geöffnet ist während das QMainWindow das Widget löschen will, hängt sich die Software auf.
Kennt jemand eine Lösung? Wie kann ich die modale MessageBox von "innen heraus" beenden, bevor das Widget selbst gelöscht wird?
DANKE!
ok ich kenn mich da nicht so auch,
aber ich wuerde das so loesen, indem ich eine variable auf true setze sobald der Dialog geoeffnet wird, diese kann ich dann abfragen.
und ich verbinde mein eigenes Signal mit dem MessageBox CloseSlot;
wenn die variable auf true ist dann emit Signalblabla;
musst du halt vorher abfragen
nvidia
aber ich wuerde das so loesen, indem ich eine variable auf true setze sobald der Dialog geoeffnet wird, diese kann ich dann abfragen.
und ich verbinde mein eigenes Signal mit dem MessageBox CloseSlot;
wenn die variable auf true ist dann emit Signalblabla;
musst du halt vorher abfragen
nvidia
oh ich hab was gutes fuer dich gefunden:
http://doc.trolltech.com/4.6/qapplicati ... AllWindows
http://doc.trolltech.com/4.6/qapplicati ... AllWindows