无法从定义的线程发射到主UI线程

时间:2013-04-20 12:54:40

标签: qt qt4

包含在我的程序内的自定义线程中的emits不起作用。似乎我的线程与主UI线程没有通信。在c#中我们有线程调度程序来处理这个问题。 QT怎么样?

这在线程内部运行:

void myThread::run(){

    while(1)
    {
        //do something
        emit display("show the result");  //NOT WORKING, THOUGH CONNECTED
    }
}

myThread xx; xx.start();

1 个答案:

答案 0 :(得分:0)

那是因为你似乎错误地使用了QThread。 QThread有一个事件循环,在你的情况下,你的run()函数中阻止了该事件循环。

你应该做的是实现一个QObject,你放置你想要运行的代码,然后创建一个vanilla QThread并使用QObject :: moveToThread()将你的QObject移动到该线程。然后,您可以正常发送和接收信号,因为QThread的事件循环未被阻止。

请参阅:https://stackoverflow.com/a/13142366/856199