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

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