2015-10-20 66 views
0

假设我有一个QLabel带有多行文本;这个多行文本来自一个文本文件:我打开文本文件,每次读取一行,并将读取的行放入QLabel后跟一个“\ n”(CR)。QLabel只有一条粗线

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

我该怎么做?

回答

1

如果您的基本文本不包含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

0

在细节,我的操作:

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 

因此,最后,只有三条或更多条线中的一条必须是粗体。 我需要进一步指示。

+0

我编辑了我的答案一些更多的指导。考虑尝试一下 –