本文是对以下两篇博文的一些修改和结合:
拦截QT关闭窗口的CloseEvent
Qt标准对话框之QMessageBox
结合两篇博文做一些修改我们可以轻易的达成:中文显示由关闭按钮事件弹出的对话框
具体代码:
//以Dialog为例 //Dialog.h #include <QCloseEvent> //加上头文件 class Dialog : public QDialog { Q_OBJECT public: explicit Dialog(QWidget *parent = 0); void closeEvent(QCloseEvent *event); //在Dialog.h加上这句 ... //省略其他代码 ... }; //Dialog.cpp #include <QCloseEvent> #include <QMessageBox> void Dialog::closeEvent(QCloseEvent *event) { QMessageBox button(QMessageBox::Warning, QString(tr("警告")),QString(tr("警告:正在试图结束程序!"))); button.setStandardButtons (QMessageBox::Yes|QMessageBox::No); button.setButtonText (QMessageBox::Yes,QString("结束")); button.setButtonText (QMessageBox::No,QString("返回")); if(button.exec() != QMessageBox::Yes) { event->ignore(); } }
样例:
当点击“关闭按钮”和“不接受”时,会返回原窗口,不会退出程序;
当点击“接受”时才会退出程序。