QT判断并打印是父线程还是子线程
时间: 2023-09-01 08:13:35 浏览: 164
在 Qt 中,可以通过 `QObject::thread()` 函数来获取某个对象所在线程的指针,然后判断该指针是否等于当前线程的指针来确定当前线程是父线程还是子线程。具体实现可以参考以下代码:
```
#include <QtCore/QThread>
// 在父线程中执行的槽函数
void ParentObject::onButtonClicked()
{
qDebug() << "Button clicked in parent thread:" << QThread::currentThread();
// 创建子线程
QThread* thread = new QThread(this);
ChildObject* childObject = new ChildObject();
childObject->moveToThread(thread);
thread->start();
// 在子线程中执行
QMetaObject::invokeMethod(childObject, "doSomething", Qt::QueuedConnection);
}
// 在子线程中执行的槽函数
void ChildObject::doSomething()
{
qDebug() << "Do something in child thread:" << QThread::currentThread();
qDebug() << "Is current thread the same as parent thread?" << (QThread::currentThread() == parentThread);
}
```
在上面的代码中,`ParentObject` 是一个在父线程中创建的对象,当按钮被点击时,它会创建一个子线程,并将 `ChildObject` 移动到子线程中执行。在 `ChildObject` 的槽函数 `doSomething()` 中,我们使用 `QThread::currentThread()` 获取当前线程的指针,并通过比较该指针和父线程的指针来判断当前线程是父线程还是子线程。
阅读全文