QT Qwidget 事件处理机制

qlineEdit

Qt事件处理是指在Qt应用程序中处理各种事件的过程。事件是指在应用程序中发生的各种操作,例如按键、鼠标点击、窗口移动等。Qt提供了一个事件处理机制,使得开发者可以对这些事件进行处理,以实现应用程序的各种功能。

Qt中的事件处理涉及到以下几个方面:

  • 事件的类型:Qt中定义了许多事件类型,包括键盘事件、鼠标事件、定时器事件等。

    事件的对象:每个事件都会被发送给一个特定的对象,例如一个窗口或一个控件。

    事件的处理:Qt中提供了一些事件处理函数,例如keyPressEvent()、mousePressEvent()等,用于处理各种事件。

    事件过滤器:Qt中还提供了事件过滤器机制,允许开发者在事件到达对象之前截获并处理事件。

在Qt中,事件处理是通过重载事件处理函数来实现的。例如,如果要处理键盘事件,就需要重载QWidget或QMainWindow类中的keyPressEvent()函数。在这个函数中,可以对按键进行处理,例如判断按下的键是哪个键,以及执行相应的操作。
除了重载事件处理函数外,还可以使用事件过滤器来处理事件。事件过滤器是一个对象,可以在事件到达目标对象之前截获并处理事件。这种方式可以允许开发者对多个对象共享事件处理代码,从而提高代码的复用性。
总之,Qt事件处理是一个非常重要的概念,开发者需要掌握它才能编写出高质量的Qt应用程序

事件第一进入子部件 执行完毕后不会交给widget再进行执行

但是我们如果这样做

QLineEdit::keyPressEvent(event); //默认处理
event->ignore(); //忽略该事件

忽略本事件 使该事件交给父类执行 这样就可以执行widget的keyPressEvent
在这里插入图片描述

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include "mylineedit.h"
#include <QDebug>
#include <QKeyEvent>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    lineEdit = new MylineEdit(this);
    lineEdit->move(100,100);

}

Widget::~Widget()
{
    delete ui;
}

void Widget::keyPressEvent(QKeyEvent *event){
    qDebug()<<tr("this is Widget keyevent") ;
}

///mylineedit.cpp

#include "mylineedit.h"
#include <QKeyEvent>
#include <QDebug>

MylineEdit::MylineEdit(QWidget *parent) : QLineEdit(parent)
{
}

void MylineEdit::keyPressEvent(QKeyEvent *event){
    qDebug() << tr("this is mylineedit keyevent") ;
    QLineEdit::keyPressEvent(event); //默认处理
    event->ignore(); //忽略该事件
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

牛郎恋刘娘,刘娘念牛郎

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值