Qt中更改文本的行间距

前提

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

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

开发环境:VS2017+Qt5.14.2

Qt中更改文本的行间距_第1张图片

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

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

功能实现

小字体: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的风格设置了,挺好,哈哈~

设置行间距的高度

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

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

最后,需要注意的是,在html中

标签是不识别首行缩进的空格的,想要展示出首行缩进的风格,必须要手动设置

总体设置

QString qsShow = "

" + qsContent + "

";

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

总结

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

具体实现,如下:

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

今天的更新就到这里喽~

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

你可能感兴趣的:(Qt,qt,开发语言,css)