qt鼠标

挣扎中前行 2011-12-27 12:47:47
我移植了一个QT程序,运行后一点开始按钮鼠标就不动了,和死机一样,等工作完成后鼠标又可以操作了。感觉从多任务系统变成了单任务系统;那位大侠能给分析下原因啊?不胜感激
...全文
181 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
挣扎中前行 2011-12-29
  • 打赏
  • 举报
回复
使用循环了。用信号和槽的方式问题解决了谢谢
[Quote=引用 11 楼 xiachm 的回复:]

在次线程中无法访问UI部件,需要用信号和槽的方式。从你刚才的描述中,我看不出在哪里耗时,就是几个判断。

你使用了循环?还是在读取数据时阻塞了?
[/Quote]
xiachm 2011-12-28
  • 打赏
  • 举报
回复
在次线程中无法访问UI部件,需要用信号和槽的方式。从你刚才的描述中,我看不出在哪里耗时,就是几个判断。

你使用了循环?还是在读取数据时阻塞了?
念茜 2011-12-27
  • 打赏
  • 举报
回复
得看你移植的程序设计,卡用户界面UI的设计应该是单进程的唉
挣扎中前行 2011-12-27
  • 打赏
  • 举报
回复
耗资源的原因是当按下开始按钮触发槽函数,在其中检查checkbox有无选中判断是否对usb设备连续(长度1-255,主要检测设备稳定性)命令请求,同时在outTextEdit中输出检测信息。
麻烦大家给点想法如何将其在线程中实现?线程中如何使用checkbox,outTextEdit这些类?谢谢大家啦
挣扎中前行 2011-12-27
  • 打赏
  • 举报
回复
耗资源的原因是当按下开始按钮触发槽函数,在其中检查checkbox有无选中判断是否对usb设备连续(长度1-255,主要检测设备稳定性)命令请求,同时在outTextEdit中输出检测信息。
麻烦大家给点想法如何将其在线程中实现?线程中如何使用checkbox,outTextEdit这些类?谢谢大家啦
挣扎中前行 2011-12-27
  • 打赏
  • 举报
回复
在次线程中我怎么引用主线程的类呢,子线程我要判断checkbox有无选中再做是否对设备连续发送命令的操作,刚运行出错了;
我该如何实现,给点建议
[Quote=引用 7 楼 xiachm 的回复:]

在你的程序运行时注意看CPU的利用率,如果接近或达到100%说明你的程序在循环执行复杂操作。

在这种情况下,它在主线程和次线程下的表现基本一致。解决的办法是把耗时的代码放到次线程中,并加入适当的sleep

还有一种情况是cpu利用率不高,但你的程序依然不响应。这种情况和楼上说的一样,你的主线程八成被阻塞了。应该使用异步的方法,或是把代码搬到次线程中。
[/Quote]
xiachm 2011-12-27
  • 打赏
  • 举报
回复
在你的程序运行时注意看CPU的利用率,如果接近或达到100%说明你的程序在循环执行复杂操作。

在这种情况下,它在主线程和次线程下的表现基本一致。解决的办法是把耗时的代码放到次线程中,并加入适当的sleep

还有一种情况是cpu利用率不高,但你的程序依然不响应。这种情况和楼上说的一样,你的主线程八成被阻塞了。应该使用异步的方法,或是把代码搬到次线程中。
ABECD 2011-12-27
  • 打赏
  • 举报
回复
开个线程,不就什么都搞定了吗?
你可能遇到了阻塞函数,如sleep() accept()等。
挣扎中前行 2011-12-27
  • 打赏
  • 举报
回复
我在那里创建子进程合理啊?我在按钮的槽中可以使用fork(),让子进程处理按钮响应,一运行报这样的错误Xlib: unexpected async reply (sequence 0xbf0)!
念茜 2011-12-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhenwo123 的回复:]

引用 1 楼 yiyaaixuexi 的回复:

得看你移植的程序设计,卡用户界面UI的设计应该是单进程的唉

麻烦你能说的详细些吗?什么是卡用户界面的?我该怎样该程序才能实现多任务的,经理催好几遍了·········
[/Quote]

你点击按钮后的处理,应该另外匹一个进程出去做,不是在本进程里,否则就会卡主鼠标的响应,就是你现在卡顿的现象。
刀刀亮 2011-12-27
  • 打赏
  • 举报
回复
楼上那是打错字了吧。应该是用户界面UI是单进程的。所以你要确定一下是不是你的程序在运行过程总是不是有很费进程的操作。造成页面假死。如果是 那就对他进行多线程。
挣扎中前行 2011-12-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yiyaaixuexi 的回复:]

得看你移植的程序设计,卡用户界面UI的设计应该是单进程的唉
[/Quote]
麻烦你能说的详细些吗?什么是卡用户界面的?我该怎样该程序才能实现多任务的,经理催好几遍了·········

21,489

社区成员

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

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