美文网首页
Qt中事件的理解(2)

Qt中事件的理解(2)

作者: xixiaxi | 来源:发表于2019-08-02 23:04 被阅读0次

这一章我们继续讲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类)。

相关文章

  • Qt中事件的理解(2)

    这一章我们继续讲Qt事件——事件的传递 1、创建工程 工程目录如下所示: 创立工程testEvent,主窗口文件以...

  • Qt中事件的理解(1)

    1、Qt中的事件 Qt中,事件作为一个对象,继承自QEvent类,常见的有键盘事件QKeyEvent、鼠标事件QM...

  • 2020-11-20 Qt事件循环

    一 Qt事件循环:从队列中不断取出消息、处理消息的过程。 Qt会接管windows的原生窗口消息,翻译成Qt消息,...

  • 一个 Qt 事件对象的旅行

    Qt 的事件来自操作系统,Qt自己产生。当Qt应用程序运行时,qt有一个未处理的事件队列,每个事件处理周期内,将处...

  • Qt5学习地址

    Qt 学习之路 2(1):序(Qt 学习之路 2(1):序) Qt 学习之路 2(2):Qt 简介(Qt 学习之路...

  • Qt中TreeWidget拖拽事件

    “啪啪,哒哒” “咦,为何会这般,我鼠标只是敲几下并未动,你却说不让我移动呢?“ 这些日子在测试工具,工具中有用到...

  • Qt全局热键实现

    Qt 中没有实现好的跨平台全局热键,需要自己调用系统 API 来实现。 监听系统原生事件 Qt 作为跨平台的框架,...

  • Qt开发系列3——Qt中的核心技术1

    简介 这里简单介绍Qt的一些核心机制,具体参见Qt文档。 主要包含内容: Qt的信号和槽,以及事件机制 Qt Ob...

  • 解决方法:Qt 6.1添加MSVC2019构建套件

    一、问题 打开 Qt Creator,点击 工具,选择 选项 发现 Kits 中缺少 Qt 6.1.0 MSVC2...

  • Qt学习-(虚函数,界面原理等)

    Qt学习 事件:事件在Qt分很多种,例如鼠标,键盘,定时器,窗体大小,任何动作在GUI都可以触发某种事件, 根据C...

网友评论

      本文标题:Qt中事件的理解(2)

      本文链接:https://www.haomeiwen.com/subject/dmgirctx.html