关于QT富文本的那些事儿

去年折腾的一个项目,其中的某个部分就是在一段文字中的重点突出某个符号,采用不同的字体和颜色,一开始我还不太明白,后来才开始理解了原来是要富文本显示,这块目前用QT实现,然后查了一些富文本的例子,QLabel控件是支持富文本显示的,只不过网上的一些基于正则表达式的例子不能对单个字符过滤,所以下面改进了一些,不多说了,直接上代码

QString strSupplement = QString::fromLocal8Bit("*夸奖人");

        ui->lable_meal->setStyleSheet("color:black;");
        if(!strSupplement.isEmpty())
        {
//            QRegExp valueRegExp(QString("(%1)").arg(QString::fromLocal8Bit("*")));
//            valueRegExp.setCaseSensitivity(Qt::CaseInsensitive);
            strSupplement = strSupplement.replace('*', "<font style='color:red;'>\*</font>");

        }
        ui->lable_meal->setText(strSupplement);

前面是关于正则的注释,后边是针对单个字符进行过滤。

然后基于字符的过滤方法是QString::replace功能,这个函数的功能很强大,比如我在表格中也可以嵌入这个功能,在对于QTableWidget的操作中,可能针对某个表单中的数据的某个特别字符进行了重点突出,比如可能是这样的。

    QStringList TableHeader;
    ui->table_company->setColumnCount(3);
    ui->table_company->setRowCount(6);
    TableHeader.clear();
    TableHeader << QString::fromLocal8Bit("公司") << QString::fromLocal8Bit("市场")<<QString::fromLocal8Bit("份额");
    ui->table_company->horizontalHeader()->setStretchLastSection(true);
    ui->table_company->setHorizontalHeaderLabels(TableHeader);
    ui->table_company->verticalHeader()->setVisible(false);
    ui->table_company->setShowGrid(true);
    //ui->table_company->setStyleSheet(companyWhatStyle);
    const int dataTableCellWidth_company[3] = {110, 75,125};
    for(int i = 0; i < 3; ++i)
    {
        ui->table_company->setColumnWidth(i, dataTableCellWidth_meal[i]);
    }
    ui->table_company->horizontalHeader()->setFixedHeight(32);
    ui->table_company->verticalHeader()->setDefaultSectionSize(25);
    ui->table_company->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    ui->table_company->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    QString strBusiness = QString::fromLocal8Bit("*文具类:600d;*图书类:900d;*电子类:900d;杂志类:200d");
    ui->table_company->setItem(0,0,new QTableWidgetItem(QString::fromLocal8Bit("星辰科技")));
    strBusiness = strBusiness.replace('*',"<font style='color:red;font-weight:bold'>\*</font>");
    ui->table_company->setCellWidget(0,1,new QLabel(strBusiness,this));
    ui->table_company->setItem(0,2,new QTableWidgetItem(QString::fromLocal8Bit("优质"));
    

写到这里了,还是要多注意其中的坑,所以对于QT来说,还是要多加学习的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值