8

我想获得Text元素的真实宽度和高度。如果我使用paintedWidth&paintedHeight属性,我不明白。例如:

Rectangle {
    color:  "green"
    width:  a_text.paintedWidth
    height: a_text.paintedHeight

    Text {
        id:     a_text
        text:   "r"
        color:  "white"
        anchors.centerIn: parent
    }
}

如果我运行该代码,我会"r"在. 所以我没有得到真正的宽度和高度。我的意思是,白色像素的宽度和高度。"r""r"Text

有什么办法吗?

PS 另外,我还需要文本真正的左上角的相对位置,我的意思是,左上角白色像素相对于“官方”左上角像素的 x & y Text

4

2 回答 2

14

解决方案是使用新TextMetrics元素(需要 QtQuick 2.5)及其tightBoundingRect属性来获取前景文本的真实width& :heigth

import QtQuick 2.5      // required!

Rectangle {
    color:  "green"
    width:  t_metrics.tightBoundingRect.width
    height: t_metrics.tightBoundingRect.height

    Text {
        id:     a_text
        text:   "r"
        color:  "white"
        anchors.centerIn: parent
    }

    TextMetrics {
        id:     t_metrics
        font:   a_text.font
        text:   a_text.text
    }
}
于 2016-04-04T20:13:24.983 回答
2

“your_text_object.paintedHeight”或“your_text_object.paintedWidth”:是获取文本高度所需的内容,包括超过所覆盖高度的高度,因为文本超出了设置的高度。

文本 QML 元素paintedHeight

于 2018-04-23T11:55:18.397 回答