2016-04-01 15 views
2

Ich möchte die tatsächliche Breite & Höhe eines Text Elements erhalten. Wenn ich die paintedWidth & paintedHeight Eigenschaften verwende, verstehe ich es nicht. Zum Beispiel:Kann ich die tatsächliche Breite und Höhe eines Textelements ermitteln?

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

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

Wenn ich diesen Code ausführen, sehe ich etwas Grünfläche auf der linken Seite des "r" auf dem "r" und unterhalb des "r". Also bekomme ich nicht die tatsächliche Breite & Höhe des . Ich meine, die Breite & Höhe der weißen Pixel.

Jeder Weg, es zu tun?

P.S. Außerdem würde ich die relative Position der realen oberen linken Ecke des Textes benötigen, ich meine, die x & y des oberen linken weißen Pixels relativ zum "offiziellen" oberen linken Pixel des Text.

+0

Ich bin froh, dass Sie gelöst haben deine Probleme – BaCaRoZzo

Antwort

3

Die Lösung ist das neue TextMetrics Element zu verwenden (erfordert QtQuick 2.5) und seine tightBoundingRect Eigenschaft, die reale width & heigth des Vordergrundtext zu erhalten:

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 
    } 
}