转:http://blog.sina.com.cn/s/blog_9da24f3b0101jz1w.html
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("<span style=\" color:#%1;\">%2</span>").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("<img src=\"%1\"/>").arg(path); } 2.在你的TextBrowser中添加html //这里的path既可以是qrc路径,也可以是本地路径 QString imgPath = QString("D:/img/hello.png"); imgPathToHtml(imgPath); m_TextBrowser->insertHtml(imgPath); PS:有了以上准备,我的iCute多功能串口调试助手就可以升级了,修复之前使用彩色文字后,特殊字符无法显示的问题。 修复自动发送,与发送后清空矛盾的问题。 添加发送接收计数功能。 新版本即将推出,敬请期待。
|