QLabel只有一条粗线

时间:2015-10-20 07:02:42

标签: qt qlabel

假设我有一个带有多行文字的#include <stdio.h> int main() { int x; int valI, i; short valS; long valL; signed valSi; unsigned valUn; // printf("enter a num"); // scanf("%d",&x); x = -10; valI = x; valS = x; valL = x; valSi = x; valUn = x; printf("\n\t%i\t%li\n",valI,sizeof(valI)); for(i = 8*sizeof(valI); i >= 0 ; i--) { printf("%i",(valI & (1<<i))? 1 : 0); } printf("\n\t%i\t%li\n",valS,sizeof(valS)); for(i = 8*sizeof(valS); i >= 0 ; i--) { printf("%i",(valS & (1<<i))? 1 : 0); } printf("\n\t%li\t%li\n",valL,sizeof(valL)); for(i = 8*sizeof(valL); i >= 0 ; i--) { printf("%i",(valL & (1<<i))? 1 : 0); } printf("\n\t%i\t%li\n",valSi,sizeof(valSi)); for(i = 8*sizeof(valSi); i >= 0 ; i--) { printf("%i",(valSi & (1<<i))? 1 : 0); } printf("\n\t%i\t%li\n",valUn,sizeof(valUn)); for(i = 8*sizeof(valUn); i >= 0 ; i--) { printf("%i",(valUn & (1<<i))? 1 : 0); } printf("\n\n"); } ;这个多行文本来自一个文本文件:我打开文本文件,一次读一行,然后将读取行放入QLabel后跟一个&#34; \ n&#34; (CR)。

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

我该怎么做?

2 个答案:

答案 0 :(得分:1)

如果你的基本文字不包含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 :(得分:0)

详细说明,我的操作:

1)以qtextstream

打开txt文件
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

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

相关问题