包含在我的程序内的自定义线程中的emits不起作用。似乎我的线程与主UI线程没有通信。在c#中我们有线程调度程序来处理这个问题。 QT怎么样?
这在线程内部运行:
void myThread::run(){
while(1)
{
//do something
emit display("show the result"); //NOT WORKING, THOUGH CONNECTED
}
}
myThread xx; xx.start();
答案 0 :(得分:0)
那是因为你似乎错误地使用了QThread。 QThread有一个事件循环,在你的情况下,你的run()函数中阻止了该事件循环。
你应该做的是实现一个QObject,你放置你想要运行的代码,然后创建一个vanilla QThread并使用QObject :: moveToThread()将你的QObject移动到该线程。然后,您可以正常发送和接收信号,因为QThread的事件循环未被阻止。