您的位置:首页 > 编程语言 > Qt开发

拦截QT关闭窗口的CloseEvent()

2017-11-22 17:21 696 查看
通过实现closeEvent函数,就可以以对关闭窗口消息进行拦截,比如程序还没有完成工作时,可以弹出警告窗口,即使用户确认退出操作.
在头文件中,需要加入#include <QCloseEvent>:

#include <QDialog>
#include <QCloseEvent>

class ClientTest : public QDialog
{
Q_OBJECT

public:
ClientTest();
void closeEvent(QCloseEvent *event);

};

---------------------------------------------------------------
在cpp文件中,对closeEvent函数进行实现:
void ClientTest::closeEvent(QCloseEvent *event)
{
QMessageBox::StandardButton button;
button = QMessageBox::question(this, tr("退出程序"),
QString(tr("警告:程序有一个任务正在运行中,是否结束操作退出?")),
QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel );

if (button == QMessageBox::No) {
event->ignore();  //忽略退出信号,程序继续运行
}
else if (button == QMessageBox::Yes) {
event->accept();  //接受退出信号,程序退出
}
}


From: 拦截QT关闭窗口的CloseEvent()解析
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt