QLabel higlight搜索了一下

时间:2017-12-07 13:44:15

标签: c++ qt highlight qlabel

我正在开发一个Qt应用程序,我试图实现这个功能,如果你输入一个单词,它在QLabel中的所有出现都会突出显示。我不知道怎么做。有没有办法在QLabel中迭代文本并更改某个单词的背景颜色?

可以使用QTextEdit::ExtraSelection在QTextEdit中使用。但QLabel没有这种方法。

因此,例如,如果搜索到的单词是" sed"我希望在我的QLabel中得到类似的内容:

enter image description here

1 个答案:

答案 0 :(得分:2)

您可以使用Qt rich text向子文本添加一些样式。您需要在文本字符串中自己搜索并插入一些HTML。

This is my <span style="background-color:yellow">text</span>

将单词突出显示到现有标签(已包含文本)的示例:

QString searchedWord = "sed";

QString txt = lbl->text();
txt.replace(QRegExp("\\b" + searchedWord + "\\b"),
            "<span style=\"background-color:yellow\">" + searchedWord + "</span>");
lbl->setText(txt);

如果您想突出显示多个单词,则需要制作更具体的RegExp。