• 4185阅读
  • 4回复

[提问]Qt 多线程的事件处理问题 [复制链接]

上一主题 下一主题
离线item1986
 

只看楼主 倒序阅读 楼主  发表于: 2012-08-16
目前遇到个问题
创建了一个后台程序运行的线程(Thread2)重写run()并exec()
GUI线程(Thread1)在某处向Thread2 postEvent
Thread2重写了customEvent函数
customEvent里面执行一个事件处理函数(func) 然后问题就来了:
func中执行while(1)都会导致GUI线程停滞,而在Thread2的run()中while(1)就不会发生这种情况,何解?


急求啊 先谢过各位大大。
离线dbzhang800

只看该作者 1楼 发表于: 2012-08-16
因为你的QThread是在主线程创建的,所以它的槽函数,事件函数等等都要在主线程中执行。

题外,直接创建一个QObject的派生类而不是QThread的派生类可能更合适一点,然后将该派生类对象move到一个QThread中。
离线item1986

只看该作者 2楼 发表于: 2012-08-16
回 1楼(dbzhang800) 的帖子
感谢楼上大大 那进一步问一下

如何创建QThread才能让子线程的事件函数和GUI线程无关 实现并行?
离线dbzhang800

只看该作者 3楼 发表于: 2012-08-16
次线程肯定和主线程并行。问题是QThread与QThread所管理的线程是两个不同的概念。创建次线程,并不一定需要子类化QThread
离线item1986

只看该作者 4楼 发表于: 2012-08-16
回 3楼(dbzhang800) 的帖子
已经改成moveToThread的方式了 子线程事件处理果然不在主线程了 谢谢。
快速回复
限100 字节
 
上一个 下一个