movetothread使用示例
时间: 2023-09-09 13:06:10 浏览: 89
C++ Qt创建多线程的2种方式:重写run函数,使用moveToThread【应该早点知道的】源码示例
`moveToThread` 是 Qt 的一个函数,用于将对象移动到新的线程中执行。以下是一个示例:
```cpp
#include <QThread>
#include <QDebug>
class Worker : public QObject
{
Q_OBJECT
public slots:
void doWork()
{
qDebug() << "Worker thread:" << QThread::currentThreadId();
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QThread workerThread;
Worker worker;
worker.moveToThread(&workerThread);
QObject::connect(&workerThread, &QThread::started, &worker, &Worker::doWork);
workerThread.start();
return a.exec();
}
```
在这个示例中,我们首先创建了一个 `Worker` 对象和一个 `QThread` 对象。然后我们调用 `moveToThread` 函数将 `Worker` 对象移动到新的线程中。
接着,我们使用 `QObject::connect` 函数将 `worker` 对象的 `doWork` 槽函数连接到 `workerThread` 对象的 `started` 信号上。这样,当 `workerThread` 启动时,`worker` 对象的 `doWork` 函数就会在新的线程中运行。
最后,我们调用 `workerThread.start()` 启动新的线程,并调用 `a.exec()` 进入 Qt 的事件循环中,以保证程序不会直接退出。
阅读全文