我试图在 Qt 中使用线程将一些工作委派给一个线程,但我无法让它工作。我有一个继承 QMainWindow 的类,它有一个启动线程来工作的成员对象。该对象以 QMainwindow 作为父对象。它包含并初始化另一个 QObject,m_poller
我想将它移到我创建的线程:
m_pollThread = new QThread;
m_poller->moveToThread(m_pollThread);
//Bunch of connection
m_pollThread->start();
我遵循了关于如何在 Qt 中管理线程而不对其进行子类化的指南(也就是没有做错),但我仍然在 VS 中收到以下消息:
QObject::moveToThread: 当前线程 (0x2dfa40) 不是对象的线程 (0x120cf5c0)。无法移动到目标线程 (0x1209b520)
我发现以下帖子似乎处理了同样的问题,但无法用答案修复我的代码。我觉得我实际上是在正确调用 moveToThread (因为我没有从另一个线程中调用它来“拉”一个对象),但显然我仍然遗漏了一些东西:正如消息提示的那样,似乎已经有多个线程,并且我对 moveToThread() 的调用似乎最终出现在错误的线程中(尽管我承认我对此完全陌生,并且可能完全错误地解决了这个问题......)
那么我使用 Qt 线程的方式可能还有什么问题呢?
谢谢 !