QtThreadDemo

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;
}

我的GITHUB

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章