有什么好的意見和建議歡迎你提,但是請注意語氣。我寫博客的目的有兩個,一是記錄,二是分享。我記錄我的學(xué)習(xí)歷程,分享給大家。我不是神,我想神也不能精通各個技術(shù)領(lǐng)域,不是最好的方案你就冷嘲熱諷,于情于理都不太合適吧。我這又不是出書,你掏腰包買了看了覺得不好,罵幾句才痛快。我自己寫我的自己博客,你發(fā)現(xiàn)瑕疵,是好事,歡迎你提出來,哪來那么大火氣我就不懂了。你能寫出更好的,我向你學(xué)習(xí)。如若不然,在寫出作品之前,請別帶著一副大爺?shù)淖炷標(biāo)G嗥ぁ?
請原諒我說了那么多前言范er的廢話,我最后再說說關(guān)于QThread 的用法,tcpSocket起一個線程去讀取用戶注冊信息這么一檔子事。
線程,就是這么個模子:
備個注吧:QThread類提供了與系統(tǒng)無關(guān)的線程。
QThread代表在程序中一個單獨的線程控制,在多任務(wù)操作系統(tǒng)中,它和同一進(jìn)程中的其它線程共享數(shù)據(jù),但運行起來就像一個單獨的程序一樣。它不是在main()中開始,QThread是在run()中開始運行的。你繼承run()并且在其中包含你的代碼。例如:
void QThread::run () [純虛 保護(hù)]
這個方法是純虛的,并且為了能夠做有用的工作必須在繼承類中被重新實現(xiàn)。這個方法的返回將會結(jié)束線程的執(zhí)行。
void QThread::start ()
通過調(diào)用run()(必須在QThread子類中重新實現(xiàn)來包含你的代碼)開始這個線程的執(zhí)行。如果你試圖開始一個已經(jīng)運行的線程,這個調(diào)用將一直等待,直到這個線程完成,然后再重新開始這個線程。
void QThread::exit () [靜態(tài)]
結(jié)束調(diào)用線程的執(zhí)行并且喚醒任何等待它終止的線程。
bool QThread::wait ( unsigned long time = ULONG_MAX )
這將提供和POSIX pthread_join相似的功能。一個線程調(diào)用了它將會一直阻塞,知道下述條件之一滿足時繼續(xù):
1.這個QThread對象所關(guān)聯(lián)的線程已經(jīng)結(jié)束執(zhí)行(比如,當(dāng)它從run()中返回)。如果線程完成,這個函數(shù)將返回真。如果線程還沒有開始呢,這個函數(shù)也返回真。
2.time毫秒過去了。如果time是ULONG_MAX(默認(rèn)值),然后等待將永遠(yuǎn)不會超時(線程必須從run()中返回)。如果等待時間到了,這個函數(shù)將返回假。
想在線程里干什么,就在run()里寫什么,在這里的實現(xiàn)很簡單,內(nèi)容都在on_Ready_Read()的實現(xiàn)里
這個exec() 就是把整個進(jìn)程空間換成要執(zhí)行的那個程序的進(jìn)程空間,說白了就把自己換成別人。
還有請注意, QCoreApplication::exec() 必須從主線程(執(zhí)行 main() 方法的線程)調(diào)用, 不從 QThread 調(diào)用。 在GUI應(yīng)用程序,主線程也被稱為GUI線程,因為它是唯一允許執(zhí)行GUI相關(guān)操作的線程。
困死了還有一大堆工作沒有做,整個工程的源碼debug版 , release版都打包好上傳至CSDN資源,本地沒有Qt庫也可以運行體驗一下,很囧的是,我只能上傳20M以下的資源,只好縮減了一些UI的特效顯示,唉……只是些UI資源圖片的刪減無大礙,免費0積分下載: 自定義QQ
12點多了晚安~
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
