本文是对以下两篇博文的一些修改和结合:
拦截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();
}
}
样例:
当点击“关闭按钮”和“不接受”时,会返回原窗口,不会退出程序;
当点击“接受”时才会退出程序。