如果这两个函数之间存在任何差异,除了第一个函数的常量之外,我正在寻找答案:
QThread * QObject::thread() const
QThread * QThread::currentThread()
答案 0 :(得分:8)
他们完全不同。
QThread * QObject::thread() const
返回特定QObject
所在的主题。
QThread * QThread::currentThread()
返回指向QThread的指针,该QThread管理当前正在执行的线程。
class MyClass : public QObject
{
};
int main(int argc, char **argv)
{
QApplication app(argc, argv);
MyClass * obj = new MyClass();
QThread thread2;
obj->moveToThread(&thread2);
thread2.start();
qDebug() << "The current thread is " << QThread::currentThread();
qDebug() << "The thread2 address is " << &thread2;
qDebug() << "The object is in thread " << obj->thread();
return app.exec();
}
示例输出:
当前线程为QThread(0x1436b20)
中
thread2地址是QThread(0x7fff29753a30)
该对象位于线程QThread(0x7fff29753a30)
答案 1 :(得分:4)
他们做了两件不同的事情。
With btn
.Placement = xlMove
.OnAction = "ButtonRow"
.Characters.Text = "Action!"
.Left = ActiveCell.Left
.Top = ActiveCell.Top
ActiveSheet.Shapes(.Name).LockAspectRatio = msoTrue
End With
是一个静态函数,它返回一个指向调用它的线程的指针,即。当前主题。
QThread::currentThread()
返回指向此对象所在线程的指针。
答案 2 :(得分:1)
虽然它们可能会返回相同的结果,但它们并不相同。
第一个返回QObject所在的线程。
第二个返回当前正在执行的线程。