qt - 我可以获得文本元素的实际宽度和高度吗?

标签 qt qml qtquick2 plasmoid

我想获得 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 的实际宽度和高度.我的意思是,白色像素的宽度和高度。

有什么办法吗?

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

最佳答案

解决办法是使用新的TextMetrics元素(需要 QtQuick 2.5)及其 tightBoundingRect属性(property),得到真正的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
    }
}

关于qt - 我可以获得文本元素的实际宽度和高度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36364168/

相关文章:

qt - 更改QML控件的文本颜色

c++ - QtQuick 动画卡住列表和打开串口

qt - 如何(使用打印机)打印 QML 对象?

c++ - Qt 从文件中打开图像 - 如何知道图像大小

c++ - 我一定是在构建 DLL 时做错了什么

c++ - 我如何在我的 C++ 代码中创建 QML Canvas 并在其上附加视频?比如 Java Canvas 我可以

qt - 检测按下并按住 QML 中的按钮

c++ - 如何在qt中实现拖放小部件到另一个容器?

windows - 开始使用 Qt Framework 时,该选择什么 - Widgets 还是 QT Quick?

qt - 在 QML 中设置公共(public)属性值,例如 QSS