2011-02-01 23 views
1

TextWidth = -1?のときにテキストの長さを計算する方法はありますか?QGraphicsTextItemの長さを取得していますか?

私はQGraphicsTextItemの矩形を持っています。矩形の長さを超える長方形の幅を変更したいと思います。

+0

だから、-1がデフォルト値として返されますか? – Exa

答えて

1

textWidth = -1手段、その

「[...]それは、明示的な改行や 新しい段落を通じて を強制されない限り、テキストは 複数行に分割されることはありません。」

QTextDocument::textWidth()

だから、あなたはあなたのQGraphicsTextItemあなたがtextWidthを使用することはできませんが、その代わりに、あなたがこのQGraphicsTextItem内の文字列の実際の長さを必要とするの長さを取得したい場合。 QGraphicsTextItem::toPlainText()を見ると、QStringが返されます。その文字列のsize()に電話してください。

int length = my_graphics_text_item.toPlainText().size() 

は今、あなたは、この文字列の文字数を持っているし、あなたの矩形があまりにも多くの文字がある場合には、成長させるためにサイズ変更機能を実装することができます。これは一種の回避策ですが、問題の解決に役立つことを願っています。

+0

ありがとうございました。 –

+2

また、私はそれを発見しました:qreal w = text.document() - > size()。width(); –

+0

うん、とても良い。私は正しくdocuを読んでいる人が好きです:) – Exa

0

QFontMetrics([QGraphicsTextItem]のフォント)インスタンスを作成し、その幅(QString)関数を呼び出して、渡された文字列の幅をピクセル単位で取得し、指定されたfontfamily/-size /重量。 文字数を取得することは、モノスペースフォントを使用する場合にのみ妥当です。他のすべてのケースでは、それは良い考えではありません。

+0

私が読んだすべてのソースから、QFontMetricsは使い勝手を超えて長年にわたり盗聴されています。視界には何の修正もないようです。 – optikradio

+0

@optikradio:私はQFontMetricsをたくさん使っていましたが、その時代には、わずかな煩わしさしか感じませんでした(それは、内部丸めのためにいくつかのバウンディングボックス関数の呼び出しからのジッタでした)。だからクラスは私には大丈夫だと思われる。あなたのソースに名前を付ける必要があります。私は非常に興味があります。 – DerManu

3

この問題は、同じ問題で停止することによって判明しました。

私は幅を得るためにtext->boundingRect().width()を使用しています。

おそらく誰でも助けます

関連する問題