[QT] Beenden der Anwendung erzwingen
-
ClassSchedule::ClassSchedule(QWidget *parent) : QWidget(parent), ui(new Ui::ClassSchedule) { ui->setupUi(this); // Datenbank QString path = "classschedule.db"; if (QApplication::arguments().size() > 1) { path = QApplication::arguments().at(1); } if(!QFile::exists(path)) { //while((path = QFileDialog::getOpenFileName(this, tr("Datenbank öffnen"), QDir::homePath(), "classschedule.db")) == QString::null); if((path = QFileDialog::getOpenFileName(this, tr("Datenbank öffnen"), QDir::homePath(), "classschedule.db")) == QString::null) QApplication::exit(); } try { m_database = QSqlDatabase::addDatabase("QSQLITE", "fhsm-cs"); m_database.setDatabaseName(path); m_database.open(); } catch(...) { m_database.close(); QMessageBox::critical(this, tr("Fehler"), tr("Datenbank konnte nicht geöffnet werden")); QApplication::exit(); } }
Mahlzeit ... wie das Topic schon verrät, suche ich einen Weg, mein Programm zu beenden. QApplication::exit() mag irgendwie nicht. Ein ungültiger Pfad führt auch nicht zu einer Exception ... der Sqlite-Treiber legt dann einfach eine Datenbank an. Hat jemand ne Idee?
-
Wenn das Hauptfenster schliesst, sollte sich auch der Prozess beenden.
-
Und wo bitte steht dokumentiert, dass deine Funktionen in dem try-Block Exceptions werfen können?
-
Qt selbst wirft keine(*) exceptions. Check mal die API für m_database.open(); das gibt nen Returnwertden man Testen kann obs geklappt hat ... und wenn nicht: zB:
QTimer::singleShort(5, this, SLOT(close()));
oder besser nen Slot der den User über das nichtvorhandensein der DB aufklärt und dann close() aufruft.(*) die mir in ca 16 Monaten Qt Untegekommen wären