窗体关闭事件

理解 QCloseEvent

当用户尝试关闭一个窗口时(比如点击标题栏的“X”按钮,或通过菜单选择关闭),Qt 会生成一个 QCloseEvent事件

 
。这个事件会传递给该窗口的 closeEvent()函数进行处理。

 

QCloseEvent中,有两个核心方法决定了窗口的命运:

  • accept():接受关闭事件,窗口将会被关闭(隐藏或销毁) 

  • ignore():忽略关闭事件,窗口将保持打开状态,不做任何改

 

头文件

#include "QCloseEvent"

重写 closeEvent 函数

 protected:
    void closeEvent(QCloseEvent* event) override;
void QtWidgetsApplication2::closeEvent(QCloseEvent* event)
{
    // 示例1:直接阻止关闭
       // event->ignore();

       // 示例2:询问用户是否确认退出
    QMessageBox::StandardButton reply;
    reply = QMessageBox::question(this,codec->toUnicode( "确认退出"),
        codec->toUnicode("确定要关闭窗口吗?"),
        QMessageBox::Yes | QMessageBox::No);
    if (reply == QMessageBox::Yes) {
        // 用户选择"是",接受关闭事件,窗口会关闭
        event->accept();
        return;
    }
    else {
        // 用户选择"否",忽略关闭事件,窗口保持打开
        event->ignore();
        return;
 
    }
   

 

posted @ 2025-11-25 14:54  家煜宝宝  阅读(7)  评论(0)    收藏  举报