令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
如果我调用
currentThreadId()
,为什么moveToThread()
函数会打印相同的内容? 最佳答案
currentThreadId()
是QThread的静态成员。这意味着
functionClassObj->currentThreadId();
相当于
QThread::currentThreadId();
这意味着无论您使用或不使用任何对象来调用该函数,您都将获得相同的返回值。
有问题的函数返回当前正在执行的线程的ID,而不是您尝试对其调用的对象的线程亲和力。
如果要获取对该对象具有相似性的线程对象的引用,请改用
QObject::thread()
。