//qt创建线程的几种方法
//在Qt中,创建线程的主要方法有以下几种:
class MyThread : public
QThread
{
Q_OBJECT
public:
void
run()override
{
// 在这里执行你的代码
}
};
// 使用
MyThread *myThread =
new MyThread(this);
myThread->
start();
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);
5.
Qt 之 Concurrent,这里不描述,以后再说。
以上就是在Qt中创建线程的几种方法,可以根据实际需求选择合适的方法。