QT6 源,六章,事件系统(6):QCloseEvent 窗体关闭事件,QShowEvent 显示事件,QHideEvent隐藏,

(1) QCloseEvent 窗体关闭事件

/*
The QCloseEvent class contains parameters that describe a close event.

Detailed Description :
关闭事件会被发送给用户想要关闭的控件,
通常是通过在窗口菜单中选择“关闭”或点击X标题栏按钮来触发,
当您调用QWidget::close()以在程序中关闭一个控件时,也会触发这些事件。

关闭事件包含一个标志,用于指示接收者是否希望关闭该小部件。
当一个小部件接收到关闭事件时,它会被隐藏(如果它创建时启用了 Qt::WA_DeleteOnClose 标志,那么它还会被销毁)。
如果它拒绝接受关闭事件,则不会发生任何操作。
(在X11环境下,窗口管理器有可能强行关闭窗口;但在撰写本文时,我们尚未发现有任何窗口管理器会这么做。)

事件处理程序 QWidget::closeEvent()接收关闭事件。这个事件处理程序的默认实现会接受关闭事件。
如果您不希望您的控件被隐藏,或者希望进行某些特殊处理,则应重写事件处理程序并调用ignore()方法来忽略该事件。

在Application示例中,closeEvent()显示了一个关闭事件处理程序,在关闭之前询问是否要保存文档。

如果您希望小部件在关闭时被删除,请使用 Qt:WA_DeleteOnclose 标志创建它。
这在多窗口应用程序中的独立顶层窗口中非常有用。

当QQbjects被删除时,它会发出destroyed()信号。

如果最后一个顶级窗口已关闭,则会发出QGuiApplication::lastWindowClosed()信号。

isAccepted ()、函数如果事件的接收方已同意关闭该控件,则返回true;
调用`accept ()`来同意关闭该控件.如果此事件的接收方不希望关闭该控件,则调用`ignore()

*/
class Q_GUI_EXPORT QCloseEvent : public QEvent
{
    Q_EVENT_DISABLE_COPY(QCloseEvent);
public:
    QCloseEvent();
    ~QCloseEvent();
};

++ 测试一下

在这里插入图片描述

(2) QShowEvent 显示事件

/*
The QShowEvent class provides an event that is sent when a widget is shown.

有两大类显示事件:[由窗口系统引发的自发显示事件,以及内部显示事件。
自发(QEvent::显示事件是在窗口系统显示窗口之后立即发送的;
当顶级窗口在图标化后spontaneous())被重新显示时,也会发送此类事件。

内部显示事件则是在该小部件变得可见之前立即发送的。 
*/
class Q_GUI_EXPORT QShowEvent : public QEvent
{
    Q_EVENT_DISABLE_COPY(QShowEvent);
public:
    QShowEvent();
    ~QShowEvent();
};

(3)QHideEvent 隐藏

/*
The QHideEvent class provides an event which is sent after a widget is hidden.

此事件在QWidget::hide()返回之前发送,并且当顶级窗口被用户隐藏(最小化)时也会触发。
如果`spontaneous()、为真,则该事件源自应用程序之外。
在这种情况下,用户通过窗口管理器控件隐藏了窗口,或者切换到了另一个虚拟桌面,在该桌面中该窗口不可见。
该窗口将被隐藏,但不会退出。如果该窗口被图标化,则`QWidget::isMinimized()将返回真。
*/
class Q_GUI_EXPORT QHideEvent : public QEvent
{
    Q_EVENT_DISABLE_COPY(QHideEvent);
public:
    QHideEvent();
    ~QHideEvent();
};

++以上这俩事件同时测试

在这里插入图片描述

(4)

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangzhangkeji

谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值