只有一条粗线的 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")
详细我的操作:
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
因此,最后,三行或更多行中只有一行必须是粗体。
我需要进一步的说明。
假设我有一个包含多行文本的 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")
详细我的操作:
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
因此,最后,三行或更多行中只有一行必须是粗体。 我需要进一步的说明。