問題があります。main() で次のように QDialog を呼び出しています。
app.setQuitOnLastWindowClosed(true);
splashWin startWin;
if(!startWin.exec())
{
// Rejected
return EXIT_SUCCESS;
}
// Accepted, retrieve the data
startWin.myData...
QDialog には次のコードがあります。
splashWin::splashWin(QWidget *parent) :
QDialog(parent),
ui(new Ui::splashWin)
{
ui->setupUi(this);
this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
this->setAttribute(Qt::WA_QuitOnClose);
}
void splashWin::on_OK_clicked()
{
// Prepare my data
..
accept();
}
void splashWin::show_About_Window()
{
MyAboutWindow win;
setVisible(false); // <- this causes the application to send a "reject" signal!! why??
win.exec();
setVisible(true);
}
これは非常に単純なコードですが、問題は次のとおりです。 setVisible(false) または hide() の行に about ウィンドウが表示されますが、そのウィンドウが閉じられるとすぐに「拒否」ダイアログ コードが送信され、実行中のアプリケーションが終了します。
// Rejected
return EXIT_SUCCESS;
main() の行
何故ですか?ドキュメントでは、 hide() は何も返してはならないことを読みました。私はQt 4.8.2を使用しています