Qt - bei Aufruf einer QMessageBox wird Programm im Tray beendet



  • Hallo mal wieder,
    ich habe hier gerade ein recht hartnäckiges Problem mit einer MessageBox: Ich befördere mein Programm per

    this->hide();
    systray->show();
    

    in den Systemtray (systray ist ein entsprechendes Objekt). Wenn ich nun von dort eine QMessageBox aufrufe (z.B. nach Auswahl eines Kontextmenü-Punktes), und der User einen Button klickt, dann wird damit auch das komplette Programm beendet.
    Die MessageBox hat rein informative Bedeutung, es werden also keine Informationen vom User verlangt. Entferne ich nun aus dem Quellcode die Zeile

    msgBox.exec()
    

    so wird das Programm nicht beendet.
    Kann es sein, dass beim Aufruf des QMessageBox-Destruktors (also nach Klick auf z.B. "Ok") das versteckte Parent-Window mit zerstört wird? Oder liegt der Fehler womöglich an ganz anderer Stelle?



  • Du hast dir doch da irgendwas mit nem close gebastelt, oder?
    Ich nehme an die Lösung wird sein

    QApplication::setQuitOnLastWindow(faslse);
    

    Am besten in der main().
    Kann es aber nicht versprechen 😉



  • Dank dir, ich teste es gleich.
    Ein close() ist in dem Fall nicht vorhanden, das Problem hatte ich bereits früher und habe es auf andere Art umgangen 😉 - aber diesmal war ich dann doch (wieder) mit meinem Latein am Ende.

    EDIT: Jetzt klappt es wunderbar, danke nochmal. 🙂


Log in to reply