|
1Qter豆
- class Worker : public QObject
- {
- Q_OBJECT
- public slots:
- void doWork() {
- ...
- }
- };
- void MyObject::putWorkerInAThread()
- {
- Worker *worker = new Worker;
- QThread *workerThread = new QThread(this);
- connect(workerThread, SIGNAL(started()), worker, SLOT(doWork()));
- connect(workerThread, SIGNAL(finished()), worker, SLOT(deleteLater()));
- worker->moveToThread(workerThread);
- // Starts an event loop, and emits workerThread->started()
- workerThread->start();
- }
复制代码 例子中的程序,start以后会执行,doWork(),函数,doWork函数执行完毕以后,并没有收到finished(),信号,线程怎么退出阿?不能自动退出吗?必须调用workerThread指针操作,才可以退出吗?
|
最佳答案
查看完整内容
额,没看仔细,以为是从QThread继承的。
那你可以在doWork结束的时候抛个信号,收到这个信号的时候结束线程。
或者从QThread继承,把run里面doWork,完了就调用quit结束线程。
或者使用QFuture吧!会更方便些呵!
|