QML中TextMetrics的width属性计算采用什么单位?
TextMetrics的width属性单位解答
Qt QML 中的 TextMetrics 组件的 width 属性返回值默认单位为 像素。
说明
你提供的测试输出完全符合像素单位的特征:
- 窄字符
i、l的测量宽度仅为3,最宽的小写字母w测量宽度为12,和主流默认无衬线字体的单字符渲染像素宽度完全匹配。 - 该测量结果直接对应文本渲染时占用的水平像素数,在未开启高DPI全局缩放的场景下就是屏幕物理像素数;如果开启了高DPI适配,返回值为适配后的逻辑像素,同样属于像素类长度单位,不会是印刷领域常用的点(pt)单位。
测试参考
代码片段
TextMetrics { id:textMetrics text: '' } onPopupItemsChanged: { var lowerCase = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] console.log("Lower Case") for(var k = 0; k < lowerCase.length; k++) { textMetrics.text = lowerCase[k]; console.log(textMetrics.text, textMetrics.width) } }
运行输出
qml: Lower Case qml: a 7 qml: b 8 qml: c 7 qml: d 8 qml: e 8 qml: f 5 qml: g 8 qml: h 7 qml: i 3 qml: j 5 qml: k 7 qml: l 3 qml: m 11 qml: n 7 qml: o 9 qml: p 8 qml: q 8 qml: r 5 qml: s 7 qml: t 5 qml: u 7 qml: v 8 qml: w 12 qml: x 8 qml: y 8 qml: z 7
内容的提问来源于stack exchange,提问作者Mohammed Sadiq Afreed Meeran
相关产品推荐
相关产品推荐

