我有一个应用程序,我想在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
?来自msgBox
的连接是否有任何信号?
答案 0 :(得分:5)
文档recommends使用setWindowModality()
代替。以下代码适用于我:
auto m = new QMessageBox(&window);
m->setText("some text here");
m->setWindowModality(Qt::WindowModal);
m->exec();
答案 1 :(得分: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