QT学习记录(005):常见的qt事件

1 事件分类

1.1 基础事件 (QEvent):

        QEvent 是所有事件类的基类。它包含了一些基础的事件类型,如 MouseButtonPressKeyPressKeyRelease 等。

1.2 鼠标事件 (QMouseEvent):

        QMouseEvent 处理与鼠标有关的事件,例如按下、释放、移动等。

1.3 键盘事件 (QKeyEvent):

        QKeyEvent 处理与键盘有关的事件,例如按键按下、释放等。

1.4 焦点事件 (QFocusEvent):

        QFocusEvent 处理与控件焦点有关的事件,例如获得焦点、失去焦点等。

1.5 绘图事件 (QPaintEvent):

        QPaintEvent 处理绘图事件,例如窗口需要重新绘制时触发。

1.6 定时器事件 (QTimerEvent):

        QTimerEvent 处理定时器事件,用于定时执行任务。

1.7 关闭事件 (QCloseEvent):

        QCloseEvent 处理窗口关闭事件,例如用户点击关闭按钮时触发。

1.8 输入法事件 (QInputMethodEvent):

        QInputMethodEvent 处理与输入法有关的事件,例如输入法的文本输入。

1.9 拖放事件 (QDragEnterEvent, QDragMoveEvent, QDropEvent):

        用于处理拖放操作的事件,包括拖动物体进入、移动、释放等。

1.10 状态改变事件 (QWindowStateChangeEvent):

        QWindowStateChangeEvent 处理窗口状态改变事件,例如最大化、最小化等。

1.11 自定义事件 (QEvent):

        可以通过继承 QEvent 来创建自定义事件,以满足特定需求。

        这只是其中的一些常见事件类型,Qt 中还有许多其他事件类型,每种都用于处理特定的用户输入或系统事件。在使用 Qt 进行应用程序开发时,你通常会使用这些事件来响应用户操作、更新界面等。

2 附录

2.1 closeEvent()函数处理窗口关闭事件

        在 Qt 中,closeEvent 是一个用于处理窗口关闭事件的事件处理函数。它是 QWidget 类的一个虚拟函数,你可以在你的窗口类中重新实现它以处理窗口关闭时的特定行为。

        以下是一个简单的例子,展示了如何使用 closeEvent 处理窗口关闭事件:

#include <QCloseEvent>
#include <QWidget>
#include <QMessageBox>

class MyWidget : public QWidget {
    Q_OBJECT

protected:
    void closeEvent(QCloseEvent *event) override {
        // 在窗口关闭事件中执行自定义操作
        QMessageBox::StandardButton resBtn = QMessageBox::question(
            this,
            "My Widget",
            tr("Do you really want to close this application?"),
            QMessageBox::Cancel | QMessageBox::No | QMessageBox::Yes,
            QMessageBox::Yes
        );

        if (resBtn != QMessageBox::Yes) {
            // 忽略关闭事件
            event->ignore();
        } else {
            // 处理关闭事件
            event->accept();
        }
    }
};

        在这个例子中,MyWidget 类继承自 QWidget,并重写了 closeEvent 函数。在 closeEvent 中,我们弹出了一个询问框,询问用户是否真的要关闭应用程序。根据用户的选择,我们可以选择忽略关闭事件 (event->ignore()) 或者接受关闭事件 (event->accept())。在实际的应用中,可以根据需要在 closeEvent 中执行各种自定义操作,例如保存设置、询问用户等。

  closeEvent 是一个虚函数,它在 QWidget 类中被声明为虚函数,所以你不是必须要实现它。如果你不在你的窗口类中重新实现 closeEvent,基类的默认实现会被调用。这个默认实现会简单地接受关闭事件,关闭窗口。

        因此,你不一定要提供自己的 closeEvent,但是如果你想要在窗口关闭时执行一些特定的操作,例如询问用户是否保存数据或执行一些清理工作,那么你可以重新实现这个函数。如果没有提供自己的 closeEvent,通常情况下不会导致错误。只有在你需要在窗口关闭时执行特定操作时,你才需要重新实现这个函数。否则,Qt 会使用默认的行为关闭窗口。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值