这是我第一次使用Qt进行线程处理,所以请耐心等待。
我有一个单独的“系统”对象,它定期执行繁重的代码。 我从我的UI控制系统单例,但系统不知道UI。
我在main中创建了一个线程,然后将系统移动到它:
QThread systemThread;
System::instance()->moveToThread(&systemThread);
systemThread.start();
qApp.exec();
UI挂起,直到系统的周期性处理周期完成。
我还试图从 run 方法中继承QThread并调用 exec 。
可能是什么问题?我当然做错了。
祝你好运
答案 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()
。