2. statischer QInputDialog nach QFileDialog schließt sofort
Verfasst: 18. Juni 2011 12:17
Hi!
Zuerst muss ich sagen, dass ich mein Problem schon in zwei englischen Foren gepostet habe, aber da noch keine Lösung gefunden wurde, bzw. dass ich noch nach Ideen (oder auch Tests) suche, wie man das lösen könnte (die Links dazu sind http://www.qtforum.org/article/36071/2n ... loses.html und http://developer.qt.nokia.com/forums/viewthread/6896 ).
Hauptproblem ist, dass ich QInputDialog::getItem() und QFileDialog::getOpenFileName() benutze, und dann die folgenden Dialoge von QInputDialog::getItem() sofort automatisch geschlossen werden. Das passiert übrigens für folgende QFileDialog::getOpenFileName() nicht.
Meine main-Methode:
Header der benutzten Klasse CMain:
Problematische Methode im Body von CMain:
Ich hab das Projekt mal als Visual Studio 2008 Solution (und als exportierte .pro-Datei) angehängt. Ich nutze Windows 7 32bit und WinXP SP3 32bit.
Vielen Dank schonmal für jegliche Kommentare!
Gruß, Linus
Zuerst muss ich sagen, dass ich mein Problem schon in zwei englischen Foren gepostet habe, aber da noch keine Lösung gefunden wurde, bzw. dass ich noch nach Ideen (oder auch Tests) suche, wie man das lösen könnte (die Links dazu sind http://www.qtforum.org/article/36071/2n ... loses.html und http://developer.qt.nokia.com/forums/viewthread/6896 ).
Hauptproblem ist, dass ich QInputDialog::getItem() und QFileDialog::getOpenFileName() benutze, und dann die folgenden Dialoge von QInputDialog::getItem() sofort automatisch geschlossen werden. Das passiert übrigens für folgende QFileDialog::getOpenFileName() nicht.
Meine main-Methode:
Code: Alles auswählen
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
CMain myMain(&app);
QTimer::singleShot(0, &myMain, SLOT(doMain()));
int returnVal = app.exec();
cout << "Press ENTER to exit..." << endl;
getchar();
return returnVal;
}//end main
Code: Alles auswählen
class CMain : public QObject {
Q_OBJECT
public:
CMain(QObject *parent);
~CMain();
public slots:
void doMain();
private:
};//end class
Code: Alles auswählen
void CMain::doMain() {
QStringList myItems;
myItems << "Item 1" << "Item 2" << "Item 3";
// this all works!
QInputDialog::getItem(nullptr, "Test input 1", "Choose:", myItems);
QFileDialog::getOpenFileName(nullptr, "Open some file", QString(), tr("All files (*.*)"), nullptr, QFileDialog::ReadOnly);
// now, this dialog will pop up ("flash") and close immediately
QInputDialog::getItem(nullptr, "Test input 2", "Choose 2nd time:", myItems);
// this works again!
QFileDialog::getOpenFileName(nullptr, "Open another file", QString(), tr("All files (*.*)"), nullptr, QFileDialog::ReadOnly);
cout << "doMain() done. Time to quit()." << endl;
qApp->quit();
}//end method
Vielen Dank schonmal für jegliche Kommentare!
Gruß, Linus