UID:119418
UID:118494
UID:116426
20091001753:你可以简单理解为 Qt 自带了一个循环,就是事件循环。如果你再自创一个死循环,你就成功地把 Qt 的事件循环给锁死了。自然也就收不到信号。 (2019-05-24 09:06)
angelus:首先,界面gui事件循环就是程序的主循环,可以理解为主进程循环,如果在主进程循环中自己创建一个子循环,这样是不对了,因为会阻碍主循环运行,特别是用while这样的程序锁死循环,更是不可取,可以尝试下qt提供的QEventLoop,可以更优雅的在主循环中创建子循环,创建的子循环有参 .. (2019-05-24 09:24)
angelus:如果你只是想把收到的信息,放在一个容器队列里,然后用其他方式去处理,没必要开启子循环,就在接收到数据后把数据 压到容器队列中,就行了,不要阻塞主线程,至于你想怎么处理容器消息,何时去处理,可以自己决定,到底是用定时器去间隔逐条处理,还是用户在gui主界面手动点击处 .. (2019-05-24 09:42)
20091001753:就是用信号槽啊,自己定义信号与槽函数,你已经这么做了:connect(m_mqClient,SIGNAL(ReciverMessage(QByteArray)),this,SLOT(ReciverMsg(QByteArray))) (2019-05-24 09:34)
foxgod:如果是非gui界面,可以用while(1)这样的用法吗?? (2019-05-24 11:12)
angelus:你还没明白嘛,和gui没有太大关系,即使没有gui界面,主循环依然存在,有gui仅仅是因为gui是运行在主事件循环上的。建议你修改你的代码流程模型,不要依赖QCoreApplication::processEvents 处理其他事件,这东西仅仅是为了在后台繁忙的时候不至于让你的gui失去响应,而你把这种 .. (2019-05-24 16:02)
foxgod:咨询个问题,就是我有一个函数,我想用计时器,每隔多长时间去执行这个函数操作,,我想的是这个函数里面可以获取东西就执行,获取不到东西就类似挂起这样的操作,有办法做到吗 (2019-05-27 15:55)