QLabel设置多行文字显示不同样式

记得才学Qt的时候做了一个键盘,当时对Qt的样式还是不太熟悉,为了实现上面符号+下面数字的键盘效果,用PS做了一套图……下图蓝框中的几个QPushButton实质上都是贴图。

当时原本是准备用QPushButton设置两行Text,并显示不同样式,然后没做到,只能实现换行但改不了文字样式,后来就只能贴图了,文字换行的代码是这样的:

btn->setText("Test1\r\nTest2"); 

 

今天做上面图标+下面文字的QPushButton时,突然想到了以前没填完的这个坑,特地翻出这个键盘程序,缅怀一下在EFORT实习的这段经历,以及填完坑。

方法其实很简单,引入HTML的语法,既然Qt中可以用qss,那当然也可以用HTML。下面的代码创建了一个QLabel,用HTML设置了其中的文字,实现了多行文字显示不同样式的功能。嫌弃文字不居中的也可以加个HTML上的<center>。这里选择用QLabel而不用QPushButton是因为QPushButton对HTML样式无效,勉强用QLabel代替一下。

QLabel *label = new QLabel(this);
label->setText("<font style = 'font-size:15px; color:#FF0000;'> Test </font>"
               "<br/>"
               "<font style = 'font-size:20px; color:#00FF00; font-weight:bold'> Text </font>");
label->setStyleSheet("border:2px solid blue; border-radius:10px");

 效果如下:

 

这里有个弊端,就是QLabel并不像QPushButton一样自带点击事件 ,所以要手动添加点击事件,有下面两种方法:

  1. 使用eventFilter事件过滤器;
  2. 提升控件,继承QLabel,重写mousePressEvent()函数。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值