Qt中QThread线程与主线程的数据传送以及lineEdit的显示

来源:互联网 发布:知乎 原谅我红尘颠倒 编辑:程序博客网 时间:2024/05/22 04:42

最近因为项目的需要,需要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