1. 程式人生 > >Qt中QThread執行緒與主執行緒的資料傳送以及lineEdit的顯示

Qt中QThread執行緒與主執行緒的資料傳送以及lineEdit的顯示

最近因為專案的需要,需要qt與C語言的程序間通訊,這裡表示Qt為A程序,C語言為B程序。

這裡採用管道通訊。

A程序的執行緒讀取管道,B程序寫入管道。

A執行緒讀到char 字元陣列中,然後再主執行緒中lineEdit顯示。

遇到一個char 和QString的相互轉換

這裡給出一個解決辦法。

比如A從執行緒中讀到char buffer[1]中,在A主執行緒中使用  

QString str;

str.sprintf("%d",buffer[0]);

然後  lineEdit->setText(str);

可以正確在qt介面上的lineEdit顯示,如果強制的QString(buffer[0]),則會出現亂碼,比如網上的str=QString(QLatin1String(fifo_read->buffer))和str = QString().arg(fifo_read->buffer_tea[0]);。

這個過程也參考了:http://bbs.csdn.net/topics/380092788

http://bbs.csdn.net/topics/390147200