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

Qt学习: QCloseEvent关闭事件的使用及代码示例

2017-10-14 09:22 423 查看
QCloseEvent事件是指,当你鼠标点击窗口右上角的关闭按钮时,所触发的函数.如果你没有重写virtual closeEvent(QCloseEvent*event);这个虚函数的话,系统是默认接受关闭事件的,所以就会关闭窗体,但有的时候,比如在记事本程序中,但你的文本未保存时,点击关闭按钮,就会跳出是否保存的提示框,这是因为它重写了关闭事件这个虚函数.

首先用Qt设计师拖拽一个QTextEdit,然后进行整体布局.



以下是”c.cpp”下的代码:

#include "c.h"

c::c(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);

}

c::~c()
{

}
void c::closeEvent(QCloseEvent* event)
{
//当文档内容被修改时.
if (ui.textEdit->document()->isModified())
{
//跳出信息框,你是否要关闭.
auto temp = QMessageBox::information(this, "tooltip", QString::fromLocal8Bit("你是否要关闭?"), QMessageBox::Yes | QMessageBox::No);
if (temp == QMessageBox::Yes)
{
// 接受了 要关闭这个窗口的事件. accept和ignore只是作为一个标志.
event->accept();
}
else
{
//忽略了 要关闭这个窗口的事件.当前窗口就不会被关闭.
event->ignore();
}
}
else
{
event->accept();
}
}


以下是”c.h”下的代码:

#ifndef C_H
#define C_H

#include <QtWidgets/QMainWindow>
#include "ui_c.h"
#include <QCloseEvent>
#include <QMessageBox>

class c : public QMainWindow
{
Q_OBJECT

public:
c(QWidget *parent = 0);
~c();
protected:
//这是一个虚函数,继承自QEvent.只要重写了这个虚函数,当你按下窗口右上角的"×"时,就会调用你所重写的此函数.
void closeEvent(QCloseEvent*event);

private:
Ui::cClass ui;
};

#endif // C_H


最后是”main.cpp”的代码:

#include "c.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
c w;
w.show();
return a.exec();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt
相关文章推荐