Qt中更改文本的行间距

前提

这段时间工作告一段落,想要优化下一些不完美的功能,比如文本行间距这个功能。

例如:QLabel控件展示文本时,当文本内容过多时,自动换行后的文本行间距真的是太紧密了,在美观上会有一点点瑕疵。所以,为了优化这个功能,进而实现这种可以设置行间距的功能。

开发环境:VS2017+Qt5.14.2

文字的字体越大,行间距越小,在这里我设置了三种字体大小,对不同的字体分别设置行间距。

接下来,具体的实现这种功能吧~

功能实现

小字体:22;中字体:36;大字体50

因为需要展示较长文本内容,所以,第一步我们需要让QLabel展示的文本可以自动换行

1:文本自动换行

设置展示文本的固定宽度,此时的固定宽度是800

ui.labContent->setFiexedWidth(800);

设置需要展示的文本内容

ui.labContent->setText(qsContent);

设置自动换行以及自动识别文本内容的大小

ui.labContent->setWordWarp(true);
ui.labContent->adjustSize();

获取自适应后文本总体高度,用于设置QLabel控件的区域

int nHeight = ui.labContent->height();
//设置控件区域
ui.labContent->setGeometry(10, 10, 800, nHeight);

到这里,简单的文本自动换行功能就已经实现了,此时文本内容越多,并且字体越大时,行与行之间的间距就会越紧凑。

2:文本字体设置

前面效果已经展示了有三种字体风格,小号、中号、大号

设置字体风格

//获取:QLabel默认的字体样式
QFont fontContent = ui.labContent->font();
//设置:字体样式:微软雅黑
fontContent->setFamily("Microsoft YaHei");
//设置:字体大小:22
fontContent->setPixelSize(22);
//设置:字体颜色值
QPalette peContent;
peContent.setColor(QPalette::WindowText, QColor(51, 51, 51));
ui.labContent->setPalette(peContent);
//字体绑定
ui.labContent->setFont(fontContent);

当我们需要更换字体大小时,只需要替换setPixelSize中的值即可,具体的字体风格设置,我在之前的文章中有记载,可以翻阅查看,这里不再详细说明啦~

3:行间距设置

到了最最重要的一个环节了,如何设置行间距了~

在我实现这个功能的时候,也是尝试了很多方法,但是都无法设置成功,最后我发现在Qt中没有一个明确的函数来实现这个功能的,欲哭无泪呀,同志们!查了Qt资料才知道,想要实现行间距这个功能,需要效仿html的风格才可以。

想我一个C++开发现在居然要学习html的风格设置了,挺好,哈哈~

设置行间距的高度

<p style='line-height:40px;'></p>

设置了行间距之后会发现,之前设置的文本自动换行功能居然不生效了!

在html中我们想要让文本自动换行,最好的方式需要设置文本的宽度,填充满整个800的宽度

<p style='width:100%;'></p>

最后,需要注意的是,在html中<p>标签是不识别首行缩进的空格的,想要展示出首行缩进的风格,必须要手动设置

<p style='white-space: pre-wrap'></p>

总体设置

QString qsShow = "<p style='line-height:40px; width:100% ; white-space: pre-wrap; '>" + qsContent + "</p>";

到这里,设置文本行间距的功能就实现了,是不是很奇特~

总结

使用html的方式设置行间距时,不仅适用于QLabel控件,像是QLineEdit、QTextBrower等,只要是可以展示文本内容的都是适用的,看来,Qt还真是神奇哈哈!

具体实现,如下:

文本行间距设置https://download.csdn.net/download/qq_32716885/73722309

今天的更新就到这里喽~

我是糯诺诺米团,一名C++开发程序媛~

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

糯诺诺米团

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

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

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

打赏作者

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

抵扣说明:

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

余额充值