qt如何向子窗口发送send/post自定义事件

barryzhanghu 2020-02-28 05:29:54
最近需要更改一个GUI,原eventfilter安装在mainwindow中ui->boardView 下监听左右键,但是我需要将监听的事件替换为自定义事件 (当某个变量超过阈值)。但是在main.cpp中我需要手动send事件,但是只能send给mainwindow w, 而不能到ui->boardView,事件监测器也无法监听事件。相关代码可见于https://stackoverflow.com/questions/60424216/how-to-use-eventfilter-under-child-widget-to-catch-self-define-event 或知乎https://www.zhihu.com/question/375221137
...全文
690 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
barryzhanghu 2020-03-05
  • 打赏
  • 举报
回复
怎么做呢?return吗?
非弋 2020-03-05
  • 打赏
  • 举报
回复
引用 5 楼 barryzhanghu 的回复:
怎么做呢?return吗?
就是return啊,你试一下就知道了
非弋 2020-02-29
  • 打赏
  • 举报
回复
引用 2 楼 barryzhanghu 的回复:
问题是ui 定义在mainwindow内,一旦我在main.cpp中修改为QCoreApplication::postEvent(ui->boardView, .....), 编译的时候就报错 ui:used of undeclared identifier, 有什么办法可以解决呢?
如果只是简单的解决这个编译报错,你可以在MainWindow中写一个方法将ui->boardView对象抛出来
donwmufromdying 2020-02-29
  • 打赏
  • 举报
回复
你估计没有真正了解event机制。一个对象要能接收并处理event首先要继承自QObject,其次要自己实现event(),第三:该对象要启动eventloop.一般有eventloop的类基本上都有这么一个函数启动eventloop:exec()
非弋 2020-02-28
  • 打赏
  • 举报
回复
5:29发的帖子 void QCoreApplication::postEvent(QObject *receiver, QEvent *event, int priority) 第一个参数是接收者的对象 修改为QCoreApplication::postEvent(ui->boardView, .....),ui->boardView窗口才可以接收到事件
barryzhanghu 2020-02-28
  • 打赏
  • 举报
回复
问题是ui 定义在mainwindow内,一旦我在main.cpp中修改为QCoreApplication::postEvent(ui->boardView, .....), 编译的时候就报错 ui:used of undeclared identifier, 有什么办法可以解决呢?
源码链接: https://pan.quark.cn/s/a4b39357ea24 在电子工程领域中,51单片机被视作一种应用广泛的微控制器,特别是在教学以及小型嵌入式系统方面。本文将详细研究51单片机中串口通信的核心组成部分——定时器2及波特率发生器的应用方法。串口通信是设备间进行数据传输的基本途径,而定时器2和波特率发生器则是完成这一功能的关键硬件配置。现在,让我们首先了解定时器2。在51单片机系列中,包含了多个定时器,比如定时器0、定时器1和定时器2。这些定时器能够在不同的工作模式下运行,例如计数模式、定时模式或者波特率发生器模式。定时器2通常用于产生精确的时间间隔,例如在串口通信中产生特定的时序脉冲,以此来控制数据的发送与接收速度。在51单片机中,定时器2的工作模式可以通过设定特殊功能寄存器T2CON来决定。当定时器2被用作波特率发生器时,它能够通过预分频器对晶振频率进行分频,进而生成所需的波特率。接下来,我们将讨论波特率发生器。波特率指的是单位时间内传输的位数,它是衡量串口通信速率的一个重要指标。在51单片机中,波特率通常是通过调整定时器的溢出率来设定的。在波特率发生器模式下,定时器2可以通过预分频器对晶振频率进行分频,然后根据分频后的频率来确定串口的波特率。具体的计算公式为:波特率 = (系统时钟频率 / (16 + TH2+TL2)) / 2。其中,TH2和TL2是定时器2的高位和低位寄存器,它们的值会影响到最终的波特率。在提供的程序中,开发者可能已经实现了使用定时器2作为波特率发生器的逻辑,并且经过了测试验证。这表明他们可能已经通过设置T2CON寄存器选择了恰当的工作模式,调整了TH2和TL2的值以获得所需的波特率,同时可能还涉及了中断服务程...

21,481

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧