我在 Qt 4.8 (windows) 中有一个函数,它有 3 件事要做,就像这样:
void f()
{
//1. Do initialization
//2. Defer g() for next event (on the same thread) so that it may execute after f() is over
//3. Call h() which is time consuming
}
Run Code Online (Sandbox Code Playgroud)
现在,我不确定如何实现第二步,即如何确保g()在调用f()完成后在同一个线程上(但在不同的堆栈上)调用它。我尝试使用,QTimer但如果我提供了很短的时间,比如 10 毫秒,g()即使f()尚未完成执行,也会调用该函数。因此,依赖计时器似乎不是一个可靠的想法。请帮助,任何想法都非常感谢。
制作g()一个插槽或一个Q_INVOKABLE. 然后使用QMetaObject::invokeMethod(this, "g", Qt::QueuedConnection).