Qt捕捉窗口关闭事件
有时候我们希望在关闭窗口之前做一些操作,例如保存缓存数据或向用户提示是否关闭窗口等等。
由于一般的窗口都是继承自
QWidget,
那么我们可以通过覆盖
QWidget
中的虚函数
closeEvent(QCloseEvent* event);
来达到这个目的。
(1)
首先添加依赖库:
#include <QCloseEvent>
(2)
接着声明和定义
closeEvent
函数
:
a).h
文件
protected:
void closeEvent(QCloseEvent *event);
b).cpp
文件
void MainWindow::closeEvent(QCloseEvent *event)
QMessageBox::StandardButton button;
button=QMessageBox::question(this,tr("
退出程序
"),QString(tr("
确认退出程序
")),QMessageBox::Yes|QMessageBox::No);
if(button==QMessageBox::No)
event->ignore(); //
忽略退出信号,程序继续进行
else if(button==QMessageBox::Yes)
event->accept(); //
接受退出信号,程序退出
//TODO:
在退出窗口之前,实现希望做的操作
Qt捕捉窗口关闭事件有时候我们希望在关闭窗口之前做一些操作,例如保存缓存数据或向用户提示是否关闭窗口等等。由于一般的窗口都是继承自QWidget, 那么我们可以通过覆盖QWidget中的虚函数closeEvent(QCloseEvent* event);来达到这个目的。(1) 首先添加依赖库:#include<QCloseEvent>(2) 接着声明和定义clo...
Qt
程序
关闭
前,有时候需要弹出一个确认
窗口
,如何实现呢?
当鼠标点击
窗口
右上角的
关闭
按钮时,会触发一个
窗口
关闭
事件
(QCloseEvent),只需要覆写
窗口
类的closeEvent(QCloseEvent *event)函数,就可以对此
事件
进行相应处理
用到的头文件
#include<QMessageBox>
#include<QCloseEvent>
编辑
窗口
类
class MainWindow : public QMainWindow
Q_OBJECT
事件
系统
在
Qt
中,
事件
是从抽象QEvent类派生的对象,它们表示在应用程序内发生的事情或作为应用程序需要了解的外部活动的结果。
事件
可以由QObject子类的任何实例接收和处理
如何传递
事件
当一个
事件
发生时,
Qt
通过构造一个合适的QEvent子类的实例来创建一个
事件
对象表示它,并通过调用它的event()函数将它传递给QObject 的一个特定实例(或其子类)。
事件
类型
大多数
事件
类型都有特殊的类,例如:
QResizeEvent :包含调整大小
事件
的
事件
参数
QPaintEvent :包含绘
[virtual protected]通过实现closeEvent函数,就可以以对
关闭
窗口
消息进行拦截,比如程序还没有完成工作时,可以弹出警告
窗口
,即使用户确认退出操作在头文件中:#ifndef TEST_H
#define TEST_H
#include
#include
class ClientTest : public QDialog
Qt
有三种
事件
类型:
自发
事件
:由
窗口
系统产生,被放入一个系统队列中,通过
事件
循环处理,如键盘消息。
投递
事件
:由
Qt
应用自身产生,放入
Qt
的消息队列中,通过
事件
循环处理,如重绘消息。
发射
事件
:由
Qt
应用自身产生,直接发送给目标,不通过
事件
循环。
Qt
的
事件
循环位于main函数最后的QApplication::exec()中,这是一个死循环不断处理程序接收的
事件
。对投递
事件
,可以
有时候我们希望在
关闭
窗口
之前做一些操作,例如保存缓存数据或向用户提示是否
关闭
窗口
等等。
由于一般的
窗口
都是继承自QWidget, 那么我们可以通过覆盖QWidget中的虚函数closeEvent(QCloseEvent* event);来达到这个目的。
(1)首先添加依赖库:
#include <QCloseEvent>
(2)接着声明和定义closeEvent函...
使用
QT
编辑界面,其中带来很大方便的一点就是
Qt
中自带丰富的、种类齐全的类及其功能函数,程序员可以在编辑程序的过程中简单地直接调用。关于
窗口
关闭
的操作,在这里指出常用的三个槽,即quit(),exit()以及close()。
首先说明
窗口
退出时,系统提示对话框的代码编辑。对主程序的退出,可以调用成员函数exit(),同时也可以调用槽quit(),二者此时都能起到
关闭
应用程序的作用。只是应注意二者调用的方式不同。如下程序示例:
QApplication* app;...
QCloseEvent
事件
是指,当你鼠标点击
窗口
右上角的
关闭
按钮时,所触发的函数.如果你没有重写virtual closeEvent(QCloseEvent*event);这个虚函数的话,系统是默认接受
关闭
事件
的,所以就会
关闭
窗体,但有的时候,比如在记事本程序中,但你的文本未保存时,点击
关闭
按钮,就会跳出是否保存的提示框,这是因为它重写了
关闭
事件
这个虚函数.
首先用
Qt
设计师拖拽一个
QT
extEdit,然后进行整体布局.
以下是”c.cpp”下的代码:
#include "c.h"
c::c(QW
#define TASKMANAGER "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"
3、控制任务管理器屏蔽与否:
void setTaskMa...
在 `MainWindow` 类中,我们重写了 `closeEvent` 方法。在这个方法中,你可以处理
窗口
关闭
事件
,比如询问用户是否保存数据或者执行一些清理操作。例如:
```cpp
void MainWindow::closeEvent(QCloseEvent *event)
// 在
窗口
关闭
前询问用户是否保存数据
QMessageBox::StandardButton reply;
reply = QMessageBox::question(this, "确认", "是否保存数据?", QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel);
if (reply == QMessageBox::Yes) {
// 保存数据
// ...
} else if (reply == QMessageBox::No) {
// 不保存数据
// ...
} else {
// 取消
关闭
事件
event->ignore();
在上述代码中,我们使用了 `QMessageBox` 来询问用户是否保存数据。根据用户的选择,我们可以执行相应的操作,或者通过调用 `event->ignore()` 来忽略
关闭
事件
。
请注意,在你的
窗口
类中添加一个 `closeEvent` 方法,并确保将其设置为 `protected` 访问权限,以便能够重写该方法。
希望这可以帮助到你!如果有任何问题,请随时提问。
CMake配置OpenCV时,显示错误:find_host_package(PythonInterp 2.7)' found wrong Python version
圆圆的dl君:
Win10不能直接拖动文件打开的解决办法
yq201311431: