QTextEdit/QTextBrowser支持Html4。当insertPlainText不能满足你的需求的时候,可以试试用Html来添加显示的内容。这几介绍大家常用的彩色文字,和添加图片。
一、添加彩色文字。
1.由于html的特性,会导致一些特殊字符不能显示,例如用于标记的‘<’‘>’、空格,换行等。所以第一步需要对待添加的QString进行转化,转化成html支持的文本方式。使用如下函数:
void stringToHtmlFilter(QString &str)
{
//注意这几行代码的顺序不能乱,否则会造成多次替换
str.replace("&","&");
str.replace(">",">");
str.replace("<","<");
str.replace("\"",""");
str.replace("\'","'");
str.replace(" "," ");
str.replace("\n","<br>");
str.replace("\r","<br>");
}
2.根据html标记语言,将QString转化。
void stringToHtml(QString &str,QColor crl)
{
QByteArray array;
array.append(crl.red());
array.append(crl.green());
array.append(crl.blue());
QString strC(array.toHex());
str = QString(" style=\" color:#%1;\">%2").arg(strC).arg(str));
}
3.尽情使用转换成功后的QString吧。
例如在你的TextBrowser中添加如下彩色文字。
QString str(" < Hello Qt!>\n");
QColor clrR(255,0,0);
stringToHtmlFilter(str);
stringToHtml(str,clrR);
m_TextBrowser->insertHtml(str);
二、添加图片
1.由于图片没有特殊字符的问题,所以实现起来很容易。先使用如下函数将图片路径转换为html
void imgPathToHtml(QString &path)
{
path = QString(" src=\"%1\"/>").arg(path);
}
2.在你的TextBrowser中添加html
//这里的path既可以是qrc路径,也可以是本地路径
QString imgPath = QString("D:/img/hello.png");
imgPathToHtml(imgPath);
m_TextBrowser->insertHtml(imgPath);
PS:有了以上准备,我的iCute多功能串口调试助手就可以升级了,修复之前使用彩色文字后,特殊字符无法显示的问题。
修复自动发送,与发送后清空矛盾的问题。
添加发送接收计数功能。
新版本即将推出,敬请期待。
from: http://blog.sina.com.cn/s/blog_9da24f3b0101jz1w.html