找回密码
 立即注册
Qt开源社区 门户 查看内容

Qt中事件的理解(2)

2019-9-15 05:41| 发布者: admin| 查看: 552| 评论: 0

摘要: 这一章我们继续讲Qt事件——事件的传递1、创建工程工程目录如下所示:创立工程testEvent,主窗口文件以mainwindow命名,子文件以lineedit命名。2、修改程序首先将lineedit.h文件内容修改如下:这里主要是添加了keyPr ...
这一章我们继续讲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类)。


更多源码素材下载,编程知识学习请关注公众号:coding教室




----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:coding教室,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了