Могу ли я получить реальную ширину и высоту элемента Text?

Я хотел бы получить реальную ширину и высоту 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,

2 ответа

Решение

Решение состоит в том, чтобы использовать новый 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
    }
}

"your_text_object.paintedHeight" или "your_text_object.paintedWidth": это то, что вам нужно, чтобы получить высоту текста, включая высоту за высоту, которая покрыта из-за того, что текста больше, чем умещается в заданной высоте.

Текстовый элемент QML paintHeight

Другие вопросы по тегам