質問

とにかくテキストの長さを計算する TextWidth = -1?.

私はaを持っている長方形を持っています QGraphicsTextItem その中で、文字が長方形を超えたときに長方形の幅を変更したいと思います。

役に立ちましたか?

解決

textWidth = -1はそれを意味します

「[...]テキストは、明示的な行の破損または新しい段落を通じて強制されない限り、複数の行に分割されません。」

(qtextdocument :: textWidth())

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

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

これで、この文字列に文字の数があり、文字が多すぎると長方形を成長させるためにサイズ変更関数を実装できます。それは一種の回避策ですが、それがあなたの問題を解決するのに役立つことを願っています。

他のヒント

同じ問題について停止することで、この投稿を見つけました。

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

おそらくそれは誰にでも役立ちます

また、qfontmetrics([[qgraphicstextitem]のフォント)インスタンスを作成し、その幅(qstring)関数を呼び出して、指定されたfontfamily/size/weightで描画されていれば、渡された文字列の幅をピクセルで取得することもできます。文字カウントを取得するだけで、モノスパースフォントを使用する場合にのみ合理的です。他のすべての場合、それは良い考えではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top