//qt创建线程的几种方法
//在Qt中,创建线程的主要方法有以下几种:
//1.继承QThread类重写run方法
class MyThread : public QThread
{
Q_OBJECT
public:
void run() override
{
// 在这里执行你的代码
}
};
// 使用
MyThread *myThread = new MyThread(this);
myThread->start();
//2.使用Qt的QRunnable类
class MyRunnable : public QRunnable
{
public:
void run() override
{
// 在这里执行你的代码
}
};
// 使用
MyRunnable *myRunnable = new MyRunnable();
QThreadPool::globalInstance()->start(myRunnable);
//3.使用Qt的QThread的moveToThread方法
class Worker : public QObject
{
Q_OBJECT
public slots:
void doWork(const QString ¶meter)
{
// 在这里执行你的代码
}
};
class Controller : public QObject
{
Q_OBJECT
QThread workerThread;
public:
Controller()
{
Worker *worker = new Worker;
workerThread.start();
worker->moveToThread(&workerThread);
connect(this, &Controller::operate, worker, &Worker::doWork);
connect(&workerThread, &QThread::finished, worker, &QObject::deleteLater);
}
signals:
void operate(const QString ¶meter);
};
// 使用
Controller *controller = new Controller();
controller->operate("parameter");
//4.使用Qt的QRunnable和QThreadPool
class Worker : public QObject
{
Q_OBJECT
public:
void doWork(const QString ¶meter)
{
// 在这里执行你的代码
}
};
// 使用
Worker *worker = new Worker();
QRunnable *runnable = new QRunnable([worker]()
{
worker->doWork("parameter");
});
QThreadPool::globalInstance()->start(runnable);
Qt 之 Concurrent,这里不描述,以后再说。5.
以上就是在Qt中创建线程的几种方法,可以根据实际需求选择合适的方法。