Qt5.12 QML——TextMetrics字体长度的测量指标

序言

用QML做一个按钮时,有需求是要求只有底下一横,但是不能靠太近,而且长度要刚刚好和字的长度一致,正当我查也查不出来时,被某群的群友启发,知道有一个TextMetrics可以提供相应字体的长度,但是网上没有多少相关的文档,所以我来破这个瓜
皓月孤辰的应用

一、TextMetrics的用处

TextMetrics可以提供在初始化时相应字体的长度,记住重点!是在初始化时的长度
QML Type

二、TextMetrics的简单用法

一般来说,我只需要赋予TextMetrics 的font属性和text属性即可,这样就已经满足需求了,更多细则看Qt助手即可

TextMetrics {
        id: pageTextMetrics
        font {
            family: "serif"
            pixelSize: 25
        }
        text: "交互指令"
}

如上,我给TextMetrics 赋予了一个 "serif"字体 25像素的字体格式(未设置的自动设为默认值),和相对应的“交互指令”,这样,我们就可以从中获取到四个字的实际代码长度了。

在使用时只需要这样调用其的width和height即可

ctx.beginPath()
ctx.moveTo( -pageTextMetrics.width / 2, 14)
ctx.lineTo( pageTextMetrics.width / 2, 14)
ctx.stroke()

记住:受控件实际缩放到界面,会导致实际长度有所变化,很可能会导致变化后的长度和代码的长度不一样,所以最好在代码里将其对齐就行。

综上,便得到了我设置的“交互指令”的长度了,至于我序言写的控件是怎么弄的,我只能说是用Canvas画出来的,要讲Canvas的话就未免太长了,我还没掌握好,加之我只是讲TextMetrics的用法,故此按下不表。

三、其余属性拓展

elide : enumeration:该属性的作用是,当实际文字长度超过赋予限制的文字长度elideWidth时,该TextMetrics的属性elidedText就会出现省略号,而出现的形式,则通过不同的枚举变量来显示

Qt::ElideNone - No eliding; this is the default value.
Qt::ElideLeft - For example: "...World"
Qt::ElideMiddle - For example: "He...ld"
Qt::ElideRight - For example: "Hello..."

elideWidth : real:与上者相搭配,赋予该属性,超过该宽度则会出现省略号

elidedText : string:这是呈现省略号时的text版本,比如说该属性保存的文本是"Hello…"

text : string:该属性保存用于度量的文本,如果已经赋予了值,可直接读取为实际的文本,即使超过了省略宽度,也不会出现上者一般的省略号修饰

未完待续…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

溪渣渣_梁世华

打赏?我甚至没有任何收费的章节

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

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

打赏作者

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

抵扣说明:

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

余额充值