QMessageBox exec 似乎没有返回 QDialog::D ialogCode
QMessageBox exec doesnt seem to return QDialog::DialogCode
我的应用程序的closeEvent()
看起来像这样(Windows上的Qt 5.8.0(:
void MainWindow::closeEvent(QCloseEvent *event)
{
if(some_changes_were_made) // bool
{
QMessageBox mbox;
mbox.setText("Page(s) have been changed.");
mbox.setInformativeText("What do you want to do?");
mbox.addButton("Exit now", QMessageBox::AcceptRole);
mbox.addButton("Save page(s) first", QMessageBox::RejectRole);
int exit_code = mbox.exec();
if(exit_code == QDialog::Rejected)
{
// bail out of the close event so the user can save pages
event->ignore();
return;
}
}
event->accept();
}
我很好奇文档是否错误,其中指出exec()
返回一个QDialog::DialogCode
. 它实际上似乎返回了QMessageBox::ButtonRole
(有趣的是,这是反比值(。 还是我只是在这里做错了什么?
请原谅任何拼写错误,因为我无法在此处复制实际代码。
在此处查看 QMessageBox 参考。
它应该返回标准按钮回复之一。您正在使用QDialogBox
回复,QMessageBox
已经覆盖了QDialogBox
的exec
方法。
您要检查如下内容:
switch (exit_code) {
case QMessageBox::Save:
// Save was clicked
break;
case QMessageBox::Discard:
// Don't Save was clicked
break;
case QMessageBox::Cancel:
// Cancel was clicked
break;
default:
// should never be reached
break;
}
来源于同一链接。
相关文章:
- 自定义对话框(源自QDialog)不会关闭(Android)
- QDialog 不能在 Windows 上退出,但在 MacOS 上不能退出/
- QDialog自行关闭,我该如何解决?
- Qt5自定义QDialog,不使用qt创建器
- 当按下QDialog取消或确定时如何调用函数?
- 如何根据标题长度调整QDialog的大小?
- 如何通过 Qdialog 中的 qtablewidget 填充作为 MainWindow 成员的 qvector
- 正在加载 sf::图片来自 QDialog
- 如何释放QPushButton的焦点,这是QDialog的默认按钮
- 如何从QDialog的常量方法显示QMessageBox?
- QT-从QDialog(MainWindow满载之前)关闭程序
- 在主线程中创建 QDialog
- 创建多个带有通过阀的QDialog
- 如何从另一个QDialog访问comboBox的文本并将其写入该对话框中的lineEdit
- QDialog 继承类的 Qt 调用成员函数
- QDialog 不会保留在父 QMainWindow 之上
- 带有taksbar图标但父母的QDialog
- MFC App中的QT DLL-如何使Qdialog *真正 *模式
- 如何QDialog raise()函数不起作用
- QMessageBox exec 似乎没有返回 QDialog::D ialogCode