?のときにテキストの長さを計算する方法はありますTextWidth = -1
か。
を含む四角形があり、QGraphicsTextItem
文字が四角形を超えたときに四角形の幅を変更したいと考えています。
?のときにテキストの長さを計算する方法はありますTextWidth = -1
か。
を含む四角形があり、QGraphicsTextItem
文字が四角形を超えたときに四角形の幅を変更したいと考えています。
同じ問題に立ち寄ってこの投稿を見つけました。
text->boundingRect().width()
幅を取得するために使用しています。
おそらくそれは誰かを助ける
textWidth = -1 は、つまり、
「[...]明示的な改行または新しい段落によって強制されない限り、テキストは複数の行に分割されません。」
( QTextDocument::textWidth() )
したがって、長さを取得したい場合QGraphicsTextItem
は使用できませんtextWidth
が、代わりに this 内の文字列の実際の長さが必要ですQGraphicsTextItem
。QString を返すQGraphicsTextItem::toPlainText()を見てください。その文字列を呼び出しsize()
ます。
int length = my_graphics_text_item.toPlainText().size()
これで、この文字列の文字数がわかり、サイズ変更関数を実装して、文字が多すぎる場合に四角形を大きくすることができます。これは一種の回避策ですが、問題の解決に役立つことを願っています。
QFontMetrics([QGraphicsTextItem のフォント]) インスタンスを作成し、その width(QString) 関数を呼び出して、指定された fontfamily/-size/-weight で描画された場合、渡された文字列の幅をピクセル単位で取得することもできます。等幅フォントを使用している場合は、文字数を取得するだけで十分です。他のすべての場合、それは良い考えではありません。