Qt做驱动实时应用程序的矛盾

买个包子当球踢 2013-05-05 01:09:13
我现在要做的东西是一个实时更新数据的GUI应用程序,它是一个驱动的应用程序。
1、通过读取驱动的结果数据,来获得数据。
2、应用程序的接收数据函数ReceiveData(int data)处理结果后会发送一个自定义信号newdatacome()。
3、应用程序的构造函数中的信号槽语句connect(this,SIGNAL(newDataCome()),this,SLOT(update()));使界面更新。

但问题是我不知道如何实时调用接收函数ReceiveData来使界面更新,如果在应用程序main函数中通过死循环while来调用接收函数ReceiveData的话是无法使应用程序跑出来的。我不知道自己的思维死在哪了,想到这里怎么觉得这里有矛盾
...全文
109 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 flight9 的回复:
设一个计时器QTimer来调用你的ReceiveData不行吗?
已经解决了,不知道你的想法跟我一样不,我是自定义一个带参信号一个无参槽,用一个定时器timeout信号连接无参槽,槽函数中发送带参信号,带参信号连接ReceiveData函数
flight9 2013-05-06
  • 打赏
  • 举报
回复
引用 4 楼 zjnbjlj 的回复:
[quote=引用 3 楼 flight9 的回复:] 设一个计时器QTimer来调用你的ReceiveData不行吗?
已经解决了,不知道你的想法跟我一样不,我是自定义一个带参信号一个无参槽,用一个定时器timeout信号连接无参槽,槽函数中发送带参信号,带参信号连接ReceiveData函数[/quote] 关键问题是用定时器不会如你所说的死锁。其实5#方法也可以,不过那个要处理和线程的通讯,有些复杂。
雲天之巔 2013-05-06
  • 打赏
  • 举报
回复
把你的死循环写在另外一个线程里不行么?
flight9 2013-05-05
  • 打赏
  • 举报
回复
设一个计时器QTimer来调用你的ReceiveData不行吗?
彩阳 2013-05-05
  • 打赏
  • 举报
回复
使用基于QWidget控件或是Graphics-View框架的控件都不需要调用update()函数更新。先试着写一个看看。
  • 打赏
  • 举报
回复
秒沉了?来人啊!亲

16,216

社区成员

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

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