2016-04-01 10 views
2

Я хотел бы получить реальную ширину & высота Text элемент. Если я использую & paintedHeight, я не понимаю. Например:Могу ли я получить реальную ширину и высоту элемента Text?

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. Я имею в виду, ширина & высота белых пикселей.

Любой способ сделать это?

P.S. Также мне понадобится относительное положение реального верхнего левого угла текста, я имею в виду, x & y верхнего левого белого пикселя относительно «официального» верхнего левого пикселя Text.

+0

Я рад, что ты решена ваши проблемы – BaCaRoZzo

ответ

3

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