Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 使用文本QML类型时的默认边距_Qt_Text_Fonts_Qml - Fatal编程技术网

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
,则可以看到它与矩形的顶部完全匹配