Qt - 工作线程冻结了UI

时间:2011-07-02 08:50:32

标签: multithreading qt symbian qthread

这是我第一次使用Qt进行线程处理,所以请耐心等待。

我有一个单独的“系统”对象,它定期执行繁重的代码。 我从我的UI控制系统单例,但系统不知道UI。

我在main中创建了一个线程,然后将系统移动到它:

QThread systemThread;

System::instance()->moveToThread(&systemThread);

systemThread.start();
qApp.exec();

UI挂起,直到系统的周期性处理周期完成。

我还试图从 run 方法中继承QThread并调用 exec

可能是什么问题?我当然做错了。

祝你好运

3 个答案:

答案 0 :(得分:2)

请参阅Qt开发人员维基中有关Threads, Events and QObjects的优秀文章。线程亲和性似乎有问题,您可以使用QObject :: thread()来检查它。

答案 1 :(得分:1)

我建议您在实施多线程时从Qt开发人员那里遵循此指南:http://blog.qt.digia.com/blog/2010/06/17/youre-doing-it-wrong/

它更有效,更无痛。

答案 2 :(得分:0)

systemThread.start()将在线程中启动systemThread.run()方法,因此您需要在run()内实现它。

创建自己的主题,子类QThread并重新实现run()