我正在尝试在Qt中使用线程将一些工作委托给线程,但我无法使其正常工作。我有一个继承自QMainWindow的类,其中包含一个成员对象,它启动线程来执行工作。该对象以QMainwindow为父级。它包含并初始化了另一个QObject,即m_poller
,我想将其移动到我创建的线程中:
m_pollThread = new QThread;
m_poller->moveToThread(m_pollThread);
//Bunch of connection
m_pollThread->start();
我按照Qt中如何管理线程而不需要对其进行子类化的指南(又称正确姿势)操作,但是在VS中仍然收到以下消息:
我发现下面的帖子似乎处理了相同的问题,但无法使用答案修复我的代码。我觉得我实际上已经正确调用了moveToThread(就像我没有从另一个线程中调用它来“拉”对象一样),但显然我还是缺少了一些东西:正如消息所暗示的那样,似乎已经有多个线程,并且我的moveToThread()调用似乎进入了错误的线程(尽管我承认我完全是新手,可能完全搞错了...) 那么我在使用Qt线程的方式上可能仍然存在哪些问题?QObject::moveToThread: 当前线程(0x2dfa40)不是对象的线程(0x120cf5c0)。 无法移动到目标线程(0x1209b520)
谢谢!