2017-12-06 2 views
0

Qt의 기본 워드 랩핑이 잘못된 위치에서 분할되기 때문에 수동 워드 랩을 수행해야합니다. 나는 이미 텍스트로 감싸지만 그 내용은 모든 내용을 보여주지 못했습니다. 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) 텍스트를 읽을 수 길이
  • str 크기를 조사하기 위해 width

이 정보가 도움이 되었기를 바랍니다 ...