从textedit处接受文本内容并发送,但在实际应用中出现了换行符不显示的问题。
搜了很多博客发现可能还是和字符编码形式有关。
我现在采用的是这个方法:
QStringList text = ui.textEdit_2->toPlainText().split("\n");
for (int i = 0; i < text.size(); i++) {
serial.write(text.at(i).toLocal8Bit() + "\r\n");
}
第一行是读取textEdit中输入的文本并且以\n为标志分割字符串。
后面的循环是将刚才分割的字符串按行输出,在每一行的后面加上换行符。
我试了很多种组合,首先第一行我最开始分割的是\r\n,但发现上下两行并未分开,所以就怀疑qt textedit中换行代表的是\n。果然改成\n就可以了。
第二个循环内部的写函数,一开始我没加转换tolocal8bit,使用write的时候会报错。且后面必须加上+"\r\n"。
所以这里面可以思考的点有这些:
textedit文本以\n换行,直接tolocal8bit不能转换为本机的换行符,故而不显示。
以\n分离字符串之后,不加\r\n也不显示换行,这说明分离字符串会将分割的那个判断标志去除,所以要加上。
明白这两点,从textedit按行读取文本就不是难事了。
下面是我的演示结果。
源代码程序我已经上传到我的资源里了,有兴趣可以看一下,不过我这个系列的博文写的基本就是我思考的全部过程了,跟着看其实也不需要看源码的。