以前寫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多線程高級編程
待續......