4

ユーザーに質問をしてQMessageBox、それに応じて応答したいアプリケーションがあります。問題は、Mac でダイアログをシートとして表示したいのですが、open()メソッドを使用するとすぐに戻ることです。

QMessageBox* msgBox = new QMessageBox(
    QMessageBox::Question,
    "Delete Record?",
    "Are you sure you want to delete this record?"
    QMessageBox::Yes | QMessageBox::No,
    this,
    Qt::Sheet);

int ret = msgBox->exec(); // does not show up as a sheet on Mac
msgBox->open(); // shows up as a sheet but returns immediately

とにかく、ユーザーがシートで押したボタンを自分で実装しなくても取得できますQDialogか? msgBoxI connectからの信号はありますか?

4

2 に答える 2

5

このドキュメントでは、代わりに使用することを推奨setWindowModality()しています。次のコードは私にとってはうまくいきます:

auto m = new QMessageBox(&window);
m->setText("some text here");
m->setWindowModality(Qt::WindowModal);
m->exec();
于 2012-09-08T22:45:31.907 に答える
0

これは私のアプリケーションの PyQt サンプルですが、次のように理解できます。

reply = QtGui.QMessageBox.question(self, 'Delete',
            "Are you sure?", QtGui.QMessageBox.Yes |
                QtGui.QMessageBox.No, QtGui.QMessageBox.No)
    if reply == QtGui.QMessageBox.Yes:
         #some action if YES clicked
于 2012-09-08T14:01:00.367 に答える