C++ 调用moveToThread()不会';不要将QObject移动到另一个线程。

C++ 调用moveToThread()不会';不要将QObject移动到另一个线程。,c++,multithreading,qt,C++,Multithreading,Qt,让functionClass成为从QObject派生的类。在我的QMainWindow类的类构造函数中(该类没有启动任何其他线程),我有以下代码: QThread workThread; functionClass *functionClassObj = new functionClass; cout << functionClassObj->thread()->currentThreadId() << endl; // prints 0x16c funct

functionClass
成为从
QObject
派生的类。在我的
QMainWindow
类的类构造函数中(该类没有启动任何其他线程),我有以下代码:

QThread workThread;
functionClass *functionClassObj = new functionClass;

cout << functionClassObj->thread()->currentThreadId() << endl; // prints 0x16c
functionClassObj->moveToThread( &workThread );
cout << functionClassObj->thread()->currentThreadId() << endl; // prints 0x16c
QThread工作线程;
functionClass*functionClassObj=新的functionClass;
cout thread()->currentThreadId()移动到线程(&workThread);
cout thread()->currentThreadId()
currentThreadId()
是QThread的静态成员。这意味着

functionClassObj->currentThreadId();
相当于

QThread::currentThreadId();
这意味着您将获得相同的返回值,无论您使用或不使用任何对象来调用函数

该函数返回当前正在执行的线程的id,而不是试图调用它的对象的线程关联


如果要获取对象具有关联性的线程对象的引用,请改用
QObject::thread()

与您的问题没有直接关系,但在堆栈上分配QThread对象不是一个好主意,因为它将在QMainWindow构造函数结束时被销毁。