视频链接
https://www.bilibili.com/video/BV18B4y1K7Cs/?spm_id_from=333.999.0.0&vd_source=fa4ef8f26ae084f9b5f70a5f87e9e41b
事件
Qt主要用来开发带窗口的应用程序,我们使用的窗口的应用程序都是基于时间(比如安卓中的点击事件),其目的是实现回调(这样程序效率才高)
因此Qt为我们提供了一系列事件处理机制。
当窗口事件产生后,事件会经过事件派发->事件过滤->事件经过->事件处理四个阶段
Qt窗口中对一些列的事件都有一些默认的处理动作,如果我们有需要则要对这些事件进行重写
事件跟信号槽很像,个人理解是信号槽像事件的一部分
事件处理器函数
每个控件都有对应的事件处理器函数,要重写这些事件处理器函数则必须要用一个子类去继承QObject或者QWidget或者QWidget的子类,对这些事件处理器函数进行重写,这样我们就可以达到自己想要的效果。
通过官方文档中受保护的函数即可找到对应的时间函数,根据自己的需要重写即可
QEvent函数
注意:如果调用了ignore函数,则本窗口会对该事件忽略,并将这个事件向上传递给父窗口(Qt的窗口都是一层一层的),直到最外层窗口,若都没有处理,则这个事件就被Qt忽略掉了
重写事件小Demo
mainwindow.cpp文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;