2016-04-01 9 views
2

実際の幅&の高さをText要素にしたいと考えています。 paintedWidth & 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.また、テキストの実際の左上隅の相対位置が必要です。つまり、Textの「正式な」左上のピクセルに対する左上の白いピクセルのx &です。

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