假设我有一个QLabel
带有多行文本;这个多行文本来自一个文本文件:我打开文本文件,每次读取一行,并将读取的行放入QLabel
后跟一个“\ n”(CR)。QLabel只有一条粗线
当我到文件的末尾,我QLabel
显示每行所有的阅读文本行。 在读取阶段,我可以检测读取的行是否包含搜索到的单词:在这种情况下,我会将整行放在粗体字符中,而所有其他行仍然不以粗体字显示。
我该怎么做?
假设我有一个QLabel
带有多行文本;这个多行文本来自一个文本文件:我打开文本文件,每次读取一行,并将读取的行放入QLabel
后跟一个“\ n”(CR)。QLabel只有一条粗线
当我到文件的末尾,我QLabel
显示每行所有的阅读文本行。 在读取阶段,我可以检测读取的行是否包含搜索到的单词:在这种情况下,我会将整行放在粗体字符中,而所有其他行仍然不以粗体字显示。
我该怎么做?
如果您的基本文本不包含html代码,则可以使用 label.setTextFormat(Qt::RichText);
将您的QLabel的格式设置为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
因此,最后,只有三条或更多条线中的一条必须是粗体。 我需要进一步指示。
我编辑了我的答案一些更多的指导。考虑尝试一下 –