QtのネイティブwordWrapが間違った場所で分割されるため、手動ラップを行う必要があります。私はすでにテキストにラップしましたが、内容はすべての内容を表示していませんでした。 QLabelは画像のように上下をカットしたワードラップなしのQLabelの高さを合わせる
私はwordWrapのなしで、その中のテキストの高さにQlabelをフィットすることはできますか?
QtのネイティブwordWrapが間違った場所で分割されるため、手動ラップを行う必要があります。私はすでにテキストにラップしましたが、内容はすべての内容を表示していませんでした。 QLabelは画像のように上下をカットしたワードラップなしのQLabelの高さを合わせる
私はwordWrapのなしで、その中のテキストの高さにQlabelをフィットすることはできますか?
QLabel
あなたは、それは問題ではないレイアウトに配置wordWrapのが有効かされていない場合は、ドキュメント見れば必要な高さに自動的にリサイズする必要があります:私はスケーラブルheight
としてそれを書く http://doc.qt.io/qt-5/layout.html
私は既にQLabelをQHBoxLayoutの中に追加しました。 –
@RafaelUeda次に、レイアウトをチェックしてください。多分、他のウィジェットのsizePolicyです。なぜなら、 'QLabel'の優先サイズは、(複数の行であっても)あなたの全体のテキストの高さに常に合うからです。 * Mohammadreza Panahi *のソリューションを使用することを強くお勧めします。レイアウトでは、非常に特殊なユースケースがある場合を除いて、これをより柔軟な方法で自動的に行うことができます。サイズであなた自身を演奏することは常にバグの源であり、将来の制限です。あなたがそれを避けることができるとき、非常に悪い考えです。 – ymoreau
を:
QLabel lbl;
int count = 0;
QString str = "";
// set lbl text
lbl.setText("hfdsf\ncsad\nfsc\dajkjkjkjhhkdkca\n925");
str = lbl.text();
for(int i = 0;i < str.length();i++)
if(str.at(i).cell() == '\n')
count++;
// resize lbl (width and height)
lbl.resize(lbl.fontMetrics().width("this is the max-length line in qlabel")
, lbl.fontMetrics().height() * (count + 1));
注:QLable
のフォントface
またはsize
を変更すると、この作業が有効になります。 (すべてのものがQLabel
フレームシェイプをBOX
に設定する前に、スケーラブルな高さで)。
あなたはwidth
スケーラブルなコンテンツを行いたい場合は、これらの手順を実行する必要があります。
QLabel
(LBL object
)テキストを読みます長さwidth
str
サイズを調査するための
QLabel::fontMetrics().width(QString str)
の使用
私はこれがあなたを助けてくれることを願っています。
QLabelの本文を自動的にサイズ変更しますか? –
_QLabel_がレイアウトの一部でない場合、その高さを[QWidget :: heightForWidth](http://doc.qt.io/qt-5/qwidget.html#heightForWidth)によって返される値に設定してみてください。 – scopchanov
@Mohammadreza Panahiはい、私はこれがほしいと思う。 –