Могу ли я получить реальную ширину и высоту элемента 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": это то, что вам нужно, чтобы получить высоту текста, включая высоту за высоту, которая покрыта из-за того, что текста больше, чем умещается в заданной высоте.