问题标签 [qeventloop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
25 浏览

qt - 奇怪的信号/槽行为

(使用 Qt 5.15.2)我有一个从同一个线程接收信号(sig_responseReady)的方法。此方法的目的是等待收到响应。在此方法等待信号时,由于调用此方法的事件(因此事件循环被嵌套)而再次调用该方法。但是,堆栈上的第一个 waitForResponse 最多 10 秒都没有收到 sig_responseReady 信号(我看不到任何原因),而后来调用 waitForResponse 则首先获得他们的信号。

这种设计的结果是我有嵌套的事件循环,根据这个stackoverflow帖子会导致插槽/信号处理错误,应该避免。我怀疑这是我的问题的原因。

有没有一种设计可以实现相同的效果,只有一个事件循环?(我想不出来)调用 waitForResponse 的函数必须暂停,直到 waitForResponse 返回。..我不能让它异步。我尝试在下面的函数中用 QCoreApplication::processEvents(QEventLoop::AllEvents,100) 替换 eventloop.exec ,但仍然得到相同的奇怪结果。(所以也许嵌套事件循环不是问题......但我无法找出原因)