1

QT 4.8.5 で QWizard を実行していますが、一部のページで他のアプリケーションを閉じてプログラムを終了する必要があります。これは正常に機能しますが、プログラムが再起動していることをユーザーに通知するポップアップメッセージを表示したいと思います(私の一部は他にもあり、私のものは常に最後に閉じられます)。ポップアップを表示するために使用するコードは次のコードで、QWizardpage の validatepage に配置します。

  QMessageBox *msgBox1 = new QMessageBox;
    msgBox1->setWindowTitle("Title...");
    msgBox1->setIcon(QMessageBox::Information);
    msgBox1->setText(" blablablalbal bla bla bla.");
    msgBox1->setWindowModality(Qt::NonModal);
    msgBox1->show();
    QCoreApplication::processEvents(); // without this line, the show does nothing and I can't see my pop up window

つまり、そのコードでは、そのウィザードページにいてクリックして終了すると、プログラムが他のアプリケーションを再起動している間に QMessageBox を起動し、それ自体を閉じます ( QApplication::quit(); を使用)。これはまさに私が望むものです...しかし、ポップアップにメッセージが表示されません...アイコン、タイトル、またはテキストが表示されません... :SI理由がわかりません:(

一方、使用する場合 ->exec(); 表示の代わりに、アイコン、タイトル、およびテキストが表示されますが、ポップアップが表示されると、ユーザーがそのポップアップを閉じるまで何も行われません... :S

ユーザーがポップアップを閉じるまで .exec() がすべてフリーズすることを理解していますが、ショーはそうではありません...

それで... show() 動作でテキストを表示するにはどうすればよいですか?? ユーザーにそのポップアップを操作させたくありません。プログラムも閉じるまで、すべてを閉じている間にポップアップが表示される必要があります...

どうもありがとう!

4

1 に答える 1