Mac上的Qt :: Sheet和QMessageBox :: show()

Add*_*ddy 3 c++ macos qt qmessagebox

我有一个应用程序,我想在用户问一个问题QMessageBox,然后做出相应的回应.问题是在Mac上我希望对话框显示为Sheet,但使用该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
Run Code Online (Sandbox Code Playgroud)

无论如何,我可以得到用户在纸张上按下哪个按钮而不必实现我自己的按钮QDialogmsgBox我连接的信号是什么?

Ste*_*Chu 5

该文件建议setWindowModality()改为使用.以下代码适用于我:

auto m = new QMessageBox(&window);
m->setText("some text here");
m->setWindowModality(Qt::WindowModal);
m->exec();
Run Code Online (Sandbox Code Playgroud)


ivi*_*ica 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
Run Code Online (Sandbox Code Playgroud)