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(); //忽略该事件
}