QLabel高亮显示搜索的单词

3
我正在开发一个Qt应用程序,试图实现这样的功能:如果你输入一个单词,则QLabel中该单词的所有出现都会被突出显示。我不确定如何做到这一点。是否有一种方法可以遍历QLabel中的文本,并更改特定单词的背景颜色?可以使用 QTextEdit::ExtraSelection 在QTextEdit中完成此操作。但是QLabel没有这个方法。例如,如果搜索的单词是“sed”,则我希望在我的QLabel中获得以下结果:

enter image description here


你可以展示一个你想要得到的例子。 - eyllanesc
嗨@eyllanesc,我添加了一个示例。我希望它能澄清我想要实现的内容。 - madasionka
@madasionka 我们指的是代码示例,而不是屏幕截图。 - Dmitry Sazonov
1个回答

2

您可以使用Qt富文本为子文本添加一些样式。您需要在文本字符串中自行查找并插入一些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。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接