Qt學習系列4--使用線程

以前寫qt程序的時候代碼都是在一個gui線程中運行的,若是遇到一些比較耗時的操做會使界面失去響應,那麼就須要把這些耗時的操做放到另外一個線程中去,而後經過信號和槽與主界面進行通訊。編程

若是百度的話,大部分結果都是從QThread派生一個類,而後重寫run(),可是這種方法只有在run()中的代碼是運行在新線程中的,其餘部分仍然在主線程中多線程

下面介紹另外一種方法。
函數

從Qobject繼承一個類(例如my_thread),將線程中要用到的東西定義在這個類中,函數用槽函數(使用信號槽機制調用,不用槽函數直接調用不會在新線程中執行),ui

而後在GUI線程中this

QThread *Mthread = new QThread(this);spa

my_thread *mthread = new my_thread;線程

my_thread->moveToThread(Mthread);繼承

Mthread->start;qt

這樣,my_thread中全部的東西就都在新線程了,經過鏈接信號和槽就能夠調用裏面的函數了thread

Qt多線程高級編程

待續......

相關文章
相關標籤/搜索