Qt中使用線程小demo.
注意:在Qt中使用線程和linux中使用是一樣的,如pthread.h pthread_create等
像UI界面時不能存在死循環和延時的,但是在線程中可以哦!
第一種用法:使用linux中的pthread.h.
pthread_t pid;
pthread_create(&pid, NULL, func, null)
void *func(void *arg)
{
/*
按需編寫
*/
}
第二種用法:使用Qt中的QThread.
Header:#include
qmake:QT += core
開啓線程的任務,這裏會自動調用類內部的run函數,run函數是一個虛函數,需要用戶繼承後在子類中重寫!!!
void start(QThread::Priority priority = InheritPriority)
這裏需要注意一點十分重要:QT中的線程必須重寫run方法,即需要繼承QThread類,然後對虛函數run,用戶自行編寫
virtual void run()
例子
//重寫線程類中的run函數
class myThread:public QThread
{
public:
void run()
{
qDebug() << "任務線程已經重寫";
}
};
//定義一個線程
myThread *tid;
//爲線程對象分配空間
tid = new myThread;
//開啓線程的任務
tid->start();
線程中傳遞UI.
pthread_t pid;
pthread_create(&pid, NULL, func, (void *)ui)
void *func(void *arg)
{
Ui::MainWindow *ui = (Ui::MainWindow *)arg;
qDebug() << "func" << (void *)ui << endl;
}