ich habe eine QMessageBox in mein Programm eingebaut und nun das Problem, dass ich sie mit einem Klick auf das X nicht schließen kann. Die QMessageBox hat das WindowFlag alwaysontop, aber auch wenn ich das wegnehme ändert sich nix.
QMessageBox askForUpdate;
askForUpdate.setWindowTitle(tr("Update available"));
askForUpdate.setText(tr("A new update is available.\n"
"Do you want it to be downloaded and installed automatically,\n"
"visit the website to download manually or do nothing now?"));
askForUpdate.addButton("&Automatically", QMessageBox::AcceptRole);
askForUpdate.addButton("&Nothing", QMessageBox::DestructiveRole);
askForUpdate.addButton("&Manually", QMessageBox::RejectRole);
askForUpdate.setWindowFlags(Qt::WindowStaysOnTopHint);
askForUpdate.activateWindow();
askForUpdate.setFocus();
askForUpdate.exec();
Jemand eine Idee?
Hab über die Foren-Suche nix zu dem Thema gefunden.
Zuletzt geändert von Bagstone am 15. Januar 2008 17:39, insgesamt 1-mal geändert.
Sorry, das ist im Originalpost wohl untergegangen:
Auch wenn ich diese Anweisung komplett rausnehme, geht es nicht. Und ich finde keinen WindowFlag, der das schließen per X verhindert/ermöglicht... hab auch schon in die Qt Sourcen geschaut weil bei einer statischen QMessageBox::warning() geht das, aber nix gefunden.
Es funktioniert nicht mehr sobald mehr als ein Button angezeigt wird da dann nicht ersichtlich ist, welcher der Buttons gedrückt wurde. Habs gerade ausprobiert.
Ein Blick in die richtige Stelle des Qt sourcecodes hat mich dann völlig aufgeklärt:
Entweder man macht a) nur einen Button in seine MessageBox oder b) einen StandardButton der Form "QMessageBox::Cancel", dann wird das klicken des X auf diesen umgeleitet. Hab den Button "Nothing" nun dadurch ersetzt und jetzt geht es.