int pos = text.indexOf(keyWord, 0, Qt::CaseInsensitive);
QString text_one = text.mid(0, pos);
QString strElidedText_one = fm.elidedText(text_one, Qt::ElideRight, fm.width(text_one), Qt::TextShowMnemonic);
painter->setPen(QPen(QColor(255, 255, 255)));
painter->drawText(QRect(x + 80, y + 15, width, height), strElidedText_one);
int len = fm.width(strElidedText_one);
QString strElidedText_keyWord = fm.elidedText(keyWord, Qt::ElideRight, fm.width(keyWord), Qt::TextShowMnemonic);
painter->setPen(QPen(QColor(14, 242, 209)));
painter->drawText(QRect(x + 80 + len, y + 15, width, height), strElidedText_keyWord);
QString text_two = text.mid(pos + keyWord.size());
if (!nickName_two.isEmpty()) {
len = len + fm.width(strElidedText_keyWord);
QString strElidedText_two = fm.elidedText(text_two, Qt::ElideRight, fm.width(text_two), Qt::TextShowMnemonic);
painter->setPen(QPen(QColor(255, 255, 255)));
painter->drawText(QRect(x + 80 + len, y + 15, width, height), strElidedText_two);
}
目前我采取的方法就是 先确定需要修改颜色的字段,然后从文本获取到改字段位置,然后截取前后字段,分别用QPainter去绘画这些字段对应的文本。
该方法只能凸出某个文本内某字段第一次出现的时候修改其颜色样式。
如若有更好的办法,望告知,谢谢~