去年折腾的一个项目,其中的某个部分就是在一段文字中的重点突出某个符号,采用不同的字体和颜色,一开始我还不太明白,后来才开始理解了原来是要富文本显示,这块目前用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来说,还是要多加学习的