Qt中事件的理解(2)

2019-08-02  本文已影响0人  xixiaxi

这一章我们继续讲Qt事件——事件的传递

1、创建工程

工程目录如下所示:

创立工程testEvent,主窗口文件以mainwindow命名,子文件以lineedit命名。

2、修改程序

首先将lineedit.h文件内容修改如下:

这里主要是添加了keyPressEvent()函数的声明。下面转到lineedit.cpp文件中。文件内容如下:

lineedit.cpp主要就是对lineedit.h的具体实现。下面进入mainwindow.h,内容如下:

红框是值得注意增加的内容,然后进入mainwindow.cpp文件中,添加内容如下:

红框分别是添加的代码代码。当然要注意头文件。

这里自定义了一个Lineedit类,它集成自QLineedit类,,然后再MainWindow中添加一个Lineedit部件。分别实现了Lineedit类和MainWindow类的键盘按下事件处理函数。

3、执行程序

下面运行程序,在窗口中按下任意按键,如回车,输出栏输出:

说明此时只有LineEdit类的键盘按下事件处理函数运行了,在lineedit.cpp文件的keyPressEvent()函数最后一行添加代码:

event->ignore();

此时应用输出:

要想输出栏能正常输出数字,在lineedit.cpp文件的keyPressEvent()前面添加默认事件处理函数即可。

4、分析结论:

这个例子中事件处理方式是采用重写部件的keyPressEvent()函数来实现。

事件是先传递给指定窗口部件(Lineedit类焦点部件)。如果该部件忽略掉该事件,那么事件就会传递给这个部件的父部件(MainWindow类)。

上一篇下一篇

猜你喜欢

热点阅读