本文已参与「新人创作礼」活动,一起开启掘金创作之路
Qt程序关闭前,有时候需要弹出一个确认窗口,如何实现呢?
当鼠标点击窗口右上角的关闭按钮时,会触发一个窗口关闭事件(QCloseEvent),只需要覆写窗口类的closeEvent(QCloseEvent *event)函数,就可以对此事件进行相应处理
用到的头文件
#include<QMessageBox>
#include<QCloseEvent>
编辑窗口类
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
//覆写closeEvent函数
void closeEvent(QCloseEvent *);
private:
Ui::MainWindow *ui;
};
源文件实现closeEvent(QCloseEvent *)函数
void MainWindow::closeEvent(QCloseEvent *e){
//窗口关闭时弹出的提示窗口
QMessageBox msgBox;
msgBox.setText("提示");
msgBox.setInformativeText("确认退出?");
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
int ret = msgBox.exec();
if(ret == QMessageBox::Ok){
//若用户点击确认,则接收这个事件,当前窗口会关闭
e->accept();
}else{
//若用户点击取消,则忽略这个事件,当前窗口不会关闭
e->ignore();
}
}
效果:
对于qmainwindow、qwidget、qdialog的介绍
窗口类型介绍:QMainWindow、QWidget、QDialog三个类都可以用来创建窗口,可以直接使用,也可以继承后使用。
QMainWindow窗口包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,也可以说是GUI程序的主窗口。
MainWindow的结构分为五个部分:菜单栏(Menu Bar)、工具栏(Toolbars)、停靠窗口(Dock Widgets)、状态栏(Status Bar)和中央窗口(Central Widget)。可以用下面的图形表示之。
QDialog是对话框窗口的基类。对话框主要用来执行短期任务,或者与用户进行互动,它可以是模态的,也可以是非模态的。他没有菜单栏、工具栏、状态栏等。 如果是主窗口,就使用QMainWindow类; 如果是对话框,就使用QDialog类; 如果不确定,有可能作为顶层窗口,也有可能嵌入到其他窗口,就使用QWidget类。
参考: