gpt4 book ai didi

c++ - 调用 moveToThread() 不会将 QObject 移动到另一个线程。

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:15:50 25 4
gpt4 key购买 nike

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

如果我调用 moveToThread(),为什么 currentThreadId() 函数打印相同的内容?

最佳答案

currentThreadId() 是 QThread 的静态成员。这意味着

functionClassObj->currentThreadId();

相当于

QThread::currentThreadId();

这意味着无论您使用或不使用任何对象来调用该函数,您都将获得相同的返回值。

有问题的函数返回当前正在执行的线程 的 ID,而不是您尝试调用它的对象的线程关联。

如果你想获得对该对象具有亲和性的线程对象的引用,请改用QObject::thread()

关于c++ - 调用 moveToThread() 不会将 QObject 移动到另一个线程。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8222146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com