(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)
谢谢