2017-12-06 24 views
0

QtのネイティブwordWrapが間違った場所で分割されるため、手動ラップを行う必要があります。私はすでにテキストにラップしましたが、内容はすべての内容を表示していませんでした。 QLabelは画像のように上下をカットしたワードラップなしのQLabelの高さを合わせる

私はwordWrapのなしで、その中のテキストの高さにQlabelをフィットすることはできますか?

+0

QLabelの本文を自動的にサイズ変更しますか? –

+0

_QLabel_がレイアウトの一部でない場合、その高さを[QWidget :: heightForWidth](http://doc.qt.io/qt-5/qwidget.html#heightForWidth)によって返される値に設定してみてください。 – scopchanov

+0

@Mohammadreza Panahiはい、私はこれがほしいと思う。 –

答えて

0

QLabelあなたは、それは問題ではないレイアウトに配置wordWrapのが有効かされていない場合は、ドキュメント見れば必要な高さに自動的にリサイズする必要があります:私はスケーラブルheightとしてそれを書く http://doc.qt.io/qt-5/layout.html

+0

私は既にQLabelをQHBoxLayoutの中に追加しました。 –

+0

@RafaelUeda次に、レイアウトをチェックしてください。多分、他のウィジェットのsizePolicyです。なぜなら、 'QLabel'の優先サイズは、(複数の行であっても)あなたの全体のテキストの高さに常に合うからです。 * Mohammadreza Panahi *のソリューションを使用することを強くお勧めします。レイアウトでは、非常に特殊なユースケースがある場合を除いて、これをより柔軟な方法で自動的に行うことができます。サイズであなた自身を演奏することは常にバグの源であり、将来の制限です。あなたがそれを避けることができるとき、非常に悪い考えです。 – ymoreau

0

を:

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)の使用

私はこれがあなたを助けてくれることを願っています。

関連する問題