Qt 使用文本QML类型时的默认边距
考虑以下简单的代码示例:Qt 使用文本QML类型时的默认边距,qt,text,fonts,qml,Qt,Text,Fonts,Qml,考虑以下简单的代码示例: import QtQuick 2.5 import QtQuick.Window 2.2 Window { visible: true color: "black" Text { text: "Hello World!" font.family: "Helvetica" font.pointSize: 24 color: "red" } } 为什么顶部有一个余量?似乎
import QtQuick 2.5
import QtQuick.Window 2.2
Window {
visible: true
color: "black"
Text {
text: "Hello World!"
font.family: "Helvetica"
font.pointSize: 24
color: "red"
}
}
为什么顶部有一个余量?似乎赋予具有特定像素大小的自定义字体会为文本
提供一个新的大小,并中断对齐
编辑:即使没有字体,似乎也有空白。我使用FontMetrics成功地删除了这个额外的空间,但是这个解决方案对于这个简单的问题来说太复杂了。等待更好的解决方案
Window {
visible: true
color: "black"
FontMetrics {
id: fontmetrics24
font.pixelSize: 24
font.family: "Helvetica"
}
Text {
text: "Hello World!"
font.family: fontmetrics24.font.family
font.pointSize: fontmetrics24.font.pixelSize
color: "red"
y: - fontmetrics24.height * 0.21
}
}
一个更简单的解决方案是如下设置
文本的属性y
:
Text {
text: "Hello World!"
font.family: "Helvetica"
font.pixelSize: 42
color: "red"
y: -contentHeight + font.pixelSize
}
请记住,如果您设置属性font.overline:true
,那么它将超出矩形
,我认为这一问题与此有关。在macOS(Sierra)上,窗口如下所示:
Text {
text: "Hello World!"
font.family: "Helvetica"
font.pixelSize: 42
color: "red"
y: -contentHeight + font.pixelSize
}
正如所指出的,这可能是一个bug,并且已经被报道过。我无法重现这种行为,你能分享整个QML文件吗?为了清晰起见,我更改了整个帖子。这似乎是一个“windows的东西”——android、linux和macos似乎产生了一致的输出。我以前没有注意到。。。真奇怪。但是如果设置属性font.overline:true
,则可以看到它与矩形的顶部完全匹配