[問題] QT 即時顯示資料

看板C_and_CPP (C/C++)作者 (YOHO)時間10年前 (2016/01/09 01:31), 編輯推噓4(407)
留言11則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux C+ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) QT 5 問題(Question): 各位好,小弟我日前用QSerialPort寫了一個讀&寫10次資料的程式,預期在textbox上即 時顯示這是round第幾次,但只會在第10round做完之後跳出迴圈才會顯示這是第10round( 意思是直接從0跳到10),我想是不是必須用QThread一個跑serial read-write另一個upda te mainwindow呢?還是直接在迴圈內讀寫完一次直接用connect-slot做就好? 煩請各位 給點意見,謝謝 預期的正確結果(Expected Output): 第一次做完顯示round 1->第二次做完顯示round 2->......->第10次做完顯示round 10 錯誤結果(Wrong Output): round 1 ->卡住等10次做完-> round 10 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): 手機發文 請見諒 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.24.68.35 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1452274299.A.0AB.html

01/09 01:34, , 1F
UI 的本質就是個迴圈。讓這個迴圈卡在處理某個東西就等於
01/09 01:34, 1F

01/09 01:34, , 2F
讓 UI 卡住,因為他沒辦法繼續收事件、執行對應的動作。
01/09 01:34, 2F

01/09 01:37, , 3F
開 work thread 想法是對的,至於從 thread 送 event 給
01/09 01:37, 3F

01/09 01:37, , 4F
UI 要查一下有沒有對應的 API 幫你處理同步問題
01/09 01:37, 4F

01/09 01:38, , 5F
Android 的話就會是 handler
01/09 01:38, 5F

01/09 02:47, , 6F
QSerialPort有event driven, 有資料會用signal通知
01/09 02:47, 6F

01/09 02:49, , 7F
除非你系統很慢 不然在Slot裡面收資料應該還可以接受
01/09 02:49, 7F

01/09 05:12, , 8F
QCoreApplication::processEvents(); 加在迴圈內試試
01/09 05:12, 8F

01/09 05:13, , 9F
https://goo.gl/q9ODIR 官方論壇討論串
01/09 05:13, 9F

01/09 11:35, , 10F
謝謝樓上的各位,我試試看
01/09 11:35, 10F

01/10 01:42, , 11F
建議用C++11 lambda然後自訂callback去作
01/10 01:42, 11F
文章代碼(AID): #1MZ_9x2h (C_and_CPP)
文章代碼(AID): #1MZ_9x2h (C_and_CPP)