只有一条粗线的 QLabel

QLabel with only one bold line

假设我有一个包含多行文本的 QLabel;此多行文本来自文本文件:我打开文本文件,一次读取一行并将读取的行放入 QLabel 后跟“\n”(CR)。

当我到达文件末尾时,我的 QLabel 每行显示所有已读文本行。 在读取阶段,我能够检测读取的行是否包含搜索到的词:在这种情况下,我会将整行放在粗体字符中,而所有其他行仍然不使用粗体。

我该怎么做?

如果您的基本文本不包含 html 代码,您可以将 QLabel 的格式设置为 RichText,使用 label.setTextFormat(Qt::RichText);。 这样,它会将您的文本解释为 html。 用 <b></b> 围绕您要突出显示的行 - 这应该可以解决问题。

作为 setTextFormat() 的替代方法,您可以用 <html></html> 包围整个文本。另请参阅 mightBeRichText() 文档。

尝试通过调用设置文本格式 ui->InfoTextLabel->setTextFormat(Qt::RichText);

要加粗的行应该用 <b></b> 包围,这样您就可以像这样将其附加到您的文本中: append("<b>" + line + "</b>\n")

看看 documentation

详细我的操作:

1) 将 txt 文件打开为 qtextstream

Info.open(QIODevice::ReadOnly);
QTextStream in(&Info);

2) 在每个读取行中查找搜索文本并将每一行附加到 QLabel 的完整文本中:

while (!line.isNull())
{
    if (line.contains(mytext)
    {
        // do something to bold the entire line
        ui->InfoTextLabel->setText(totline.append(line + "\n"));
    }
}

3) 最终结果:

line1
**mytext**
line3

因此,最后,三行或更多行中只有一行必须是粗体。 我需要进一步的说明。