QT QLabel中字体行间距怎么设置?

方式一:<br>可以达到换行的效果,但是行间距太小了,两个<br>又太大了,这种方法并不可控。

    m_titleLabel->setText("<font style ='font-size:19px; color:#ffff00;font-weight:bold'> 客户端界面 </font>"
                          "<br>"
                          "<font style = 'font-size:12px; color:#ffffff; '> 工具可模拟TCP/UDP通信 </font>"
                          );

方式二:"<p style='line-height:20px'>"调节数字可以调整两行字之间的行间距。目前发现的最有用的可行方案。

说明:line-height是指行高,而行间距=line-height减去font-size;通过设置line-height来进一步改变行间距。由于是利用css的方式来修改QLabel里字体的样式的,而css中并没有一种直接的方式来设置行间距,所以只能通过这种方法;line-height越大对应的行间距就越大。

如果有小伙伴发现其他比较好的方法,欢迎分享。

     m_titleLabel->setText("<p style='line-height:20px'>"
                          "<font style ='font-size:19px; color:#ffff00;font-weight:bold'> 客户端界面 </font>"
                          "<p style='line-height:7px'>"
                          "<font style = 'font-size:12px; color:#ffffff; '> 工具可模拟TCP/UDP通信 </font>"
                          );

方式三:如果你对字体样式没有要求,只需要换行,可以直接加\n

    m_titleLabel->setText("Test1\r\nTest2"); 
    m_titleLabel->setWordWrap(true); // 自动换行设置,遇到换行符就会换行

补充QLabel其他:

1、这两个函数结合起来就是QLabel中字体离上下左右的距离是多少,根据函数里的参数决定

    m_titleLabel->setAlignment(Qt::AlignTop);
    m_titleLabel->setIndent(5);
Qt::AlignLeft与左边缘对齐
Qt::AlignRight与右边缘对齐
Qt::AlignHCenter在可用空间水平居中
Qt::AlignVCenter在可用空间中垂直居中
Qt::AlignTop与顶部对齐
Qt::AlignBottom与底部对齐

2、如果文字过长,我们又不想换行,想把其中一部分省略为… 

    QString strText = QString("爱吃的市场的深V v地方v发的不规范");
    QString strElidedText = m_titleLabel->fontMetrics().elidedText(
                            strText, 
                            Qt::ElideRight, 
                            200, 
                            Qt::TextShowMnemonic);
    m_titleLabel->setText(strElidedText);

fontMetrics():返回小工具当前字体的字体度量

elidedText ()原型:QString QFontMetrics::elidedText ( const QString & text, Qt::TextElideMode mode, int width, int flags = 0 ) const 

功能:如果字符串文本比宽度宽,则返回字符串的省略版本(即带“...”的字符串。在它里面)。否则,返回原始字符串。

参数说明:

参数1 const QString & text:要比较的字符串

参数2 

Qt::ElideLeft省略号应该出现在文本的开头
Qt::ElideRight省略号应该出现在文本的末尾
Qt::ElideMiddle省略号应该出现在文本的中间
Qt::ElideNone省略号不应出现在文本中

参数3 int width:宽度以像素为单位指定,而不是以字符为单位

参数4 可选,支持Qt::TextShowMnemonic作为值

3、显示数字

    m_titleLabel->setNum(60);//会自动转换成QString的

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼2333号程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值