0

我的程序内的自定义线程中包含的发出不起作用。看来我的线程与主 UI 线程没有通信。在 c# 中,我们有线程调度程序来处理这个问题。QT呢?

这在线程内运行:

void myThread::run(){

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

我的线程 xx; xx.start();

4

1 回答 1

0

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

相反,您应该做的是实现一个 QObject,在其中放置要运行的代码,然后创建一个 vanilla QThread 并使用 QObject::moveToThread() 将您的 QObject 移动到该线程。这样就可以正常收发信号了,因为QThread的事件循环没有被阻塞。

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

于 2013-05-29T17:56:47.717 回答