QTextEdit/QTextBrowser添加彩色文字与图片
QTextEdit/QTextBrowser支持Html。当insertPlainText不能满足你的需求的时候,可以试试用Html来添加显示的内容。这介绍常用的彩色文字,和添加图片。
添加彩色文字。
- 由于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>");
}
- 根据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));
}
- 尽情使用转换成功后的QString吧。
例如在你的TextBrowser中添加如下彩色文字。
QString str(" < Hello Qt!>\n");
QColor clrR(255,0,0);
stringToHtmlFilter(str);
stringToHtml(str,clrR);
m_TextBrowser->insertHtml(str);
添加图片
- 由于图片没有特殊字符的问题,所以实现起来很容易。先使用如下函数将图片路径转换为html
void imgPathToHtml(QString &path)
{
path = QString("<img src=\"%1\"/>").arg(path);
}
- 在你的TextBrowser中添加html
//这里的path既可以是qrc路径,也可以是本地路径
QString imgPath = QString("D:/img/hello.png");
imgPathToHtml(imgPath);
m_TextBrowser->insertHtml(imgPath);
评论区