我嘗試使用QThread的,但我不能這樣做:( 我的樣品線程:QThread的 - 與它的問題(初學者)
#include "worker.h"
#include "mainwindow.h"
#include <QDebug>
Worker::Worker() {}
Worker::~Worker() {
qDebug() << "Worker ends.";
}
void Worker::run() {
qDebug() << "Worker start.";
sleep(2);
emit finished();
}
和代碼on_btnStart_clicked():
Worker *worker = new Worker;
QThread *workerThread = new QThread(this);
connect(workerThread, SIGNAL(started()), worker, SLOT(start()));
connect(workerThread, SIGNAL(finished()), worker, SLOT(quit()));
worker->moveToThread(workerThread);
workerThread->start();
工作人員啓動,但永遠不會結束(如果我關閉應用程序,我得到QThread: Destroyed while thread is still running
。 另一個問題 - 我怎麼可以在線程和我的應用程序之間傳輸數據?我想使用QThread的QLabel(例如:計時器)。任何我可以毫無疑問地complile的好教程LEMS。 任何人都可以幫助我?
而且,如果我可以問一下,我怎麼可以像onCreate()那樣啓動線程來創建表單?我想創建一個簡單的計時器來計算應用程序運行的時間。
Regards
您將'workerThread :: started()'連接到'Worker :: start()',但是在您提供的代碼中有'Worker :: run()',而不是'Worker :: start()'。檢查connect'是否返回true或false。 – Paul 2013-04-25 19:13:42
_我找不到任何好的教程,我可以complile沒有問題。任何人都可以幫助我嗎?_不是/examples/threads夠好嗎?此外,您可能想要閱讀qt-project中的[Threading Basics](http://qt-project.org/doc/qt-4.8/thread-basics.html)博文。 –
Paul
2013-04-25 19:26:07
@Paul - 'Object :: connect:在mainwindow.cpp中沒有這樣的插槽QThread :: run():22';在/ usr/share/qt4/doc我找不到任何東西;在qt-project.org文檔我找到像我這樣的代碼,但它沒有工作;謝謝你的鏈接,我會試試 – aso 2013-04-25 19:32:47