0

这是我第一次使用 Qt 进行线程处理,所以请多多包涵。

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

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

QThread systemThread;

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

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

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

我还尝试将 QThread 子类化并从run方法调用exec 。

可能是什么问题呢?我肯定做错了什么。

最好的祝福

4

3 回答 3

2

请参阅Qt 开发人员 wiki 中有关线程、事件和 QObjects的优秀文章。线程关联似乎有问题,您可以使用 QObject::thread() 进行检查。

于 2011-07-04T11:47:32.807 回答
1

我建议您在实现多线程时遵循 Qt 开发人员本人的此指南:https ://www.qt.io/blog/2010/06/17/youre-doing-it-wrong

它更加有效和无痛。

于 2011-07-08T15:51:33.163 回答
0

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

创建自己的线程、子类QThread和重新实现run()

于 2011-07-02T10:21:54.090 回答