QT界面程序 消息循环问题

aspack00 2012-06-01 11:42:29
我现在有个程序,需要做一个无限的do while循环,但这样就无法响应界面消息了,但我又不想用多线程。
记得mfc下有个DispatchMessage能够做到这点。不知道qt怎么做到,请教大家。

do
{
while( PeekMessage((LPMSG) &msg, NULL, 0, 0, PM_REMOVE ))
{
TranslateMessage((LPMSG) &msg );
DispatchMessage((LPMSG) &msg );
if (l++ > 100)
{
l= 0;
break;
}
}
...全文
564 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdgdsfsdff 2014-03-12
  • 打赏
  • 举报
回复
“我在主线程中调用一个while循环,时间过长,界面看起来就像死了一样.所有需要在循环中处理界面消息. 现在我用QCoreApplication::processEvents();解决了.” 我跟你出现了同样的问题,试着用多线程一直没成功,也是加了QCoreApplication::processEvents()后界面不会出现无响应的情况,但是每次循环没跳出便关闭程序的话,该程序还是会在后台运行,不知道你有没有遇到这个问题?怎么解决的呢?
lynnhua_ 2014-03-12
  • 打赏
  • 举报
回复
这种情况Qt只能用线程来处理吧?
chenzhp 2012-07-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

我在主线程中调用一个while循环,时间过长,界面看起来就像死了一样.所有需要在循环中处理界面消息.
现在我用QCoreApplication::processEvents();解决了.
[/Quote]

nice
panda20184 2012-07-27
  • 打赏
  • 举报
回复
用QT的信号与槽实现
zhy282289 2012-07-26
  • 打赏
  • 举报
回复
do while中随便一个地方QCoreApplication::processEvents();
就这样好了 2012-07-25
  • 打赏
  • 举报
回复
处理这样的办法很多, 还可以用计时器来中断
aspack00 2012-07-25
  • 打赏
  • 举报
回复
我在主线程中调用一个while循环,时间过长,界面看起来就像死了一样.所有需要在循环中处理界面消息.
现在我用QCoreApplication::processEvents();解决了.
jdwx 2012-06-02
  • 打赏
  • 举报
回复
现在还要用都do while循环,做什么呢?
xiebin133 2012-06-02
  • 打赏
  • 举报
回复
不知道你要干什么,但是,必须用多线程才能实现。
myseemydog 2012-06-01
  • 打赏
  • 举报
回复
饿、、、还是开线程吧
zhu_xz 2012-06-01
  • 打赏
  • 举报
回复
你要这个do while做啥?Qt自身就有消息分派机制啊,你用这个不够么?

16,233

社区成员

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

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