2014-06-21 3 views
2

내 응용 프로그램에는 사용자 지정 QSS가 있으며 이미지가있는 QLabel이 있습니다. 그러나 이미지에는 스타일에서 오는 큰 여백이 있습니다.Qt에서 이미지 레이블의 실제 여백 가져 오기

이 라벨 보는 방법은 QPixmap 실제 내용을 표시하는 빨간색으로는, 그래서 흰색 부분이 여백은 다음과 같습니다

enter image description here

여백은 상단과 하단 11 픽셀이다, 왼쪽 부분은 7 픽셀이고 오른쪽 부분은 45 픽셀입니다. 나는 그들을 이미지 편집기로 측정했고, 그 경계를 테두리의 일부로 계산했다.

나는이 기능을 시도 :

qDebug() << label->contentsMargins() << label->margin(); 

을하지만, 출력, 심지어이 있지만 (큰) 마진 QMargins(0, 0, 0, 0) 0이었다. 이미지 레이블의 실제/실제 여백을 어떻게 계산합니까?

답변

3

마지막으로 QLabel :: paintEvent() 소스 코드를 살펴본 후에 실제 여백을 얻을 수있었습니다. 그들은이 방법을 수행

QRect cr = label->contentsRect(); 
cr.adjust(label->margin(), label->margin(), -label->margin(), -label->margin()); 

편집 : 나는 전에 호출 때문에 제로를 반환, 그래서 label->contentsMargins()는 라벨이 부모의 스타일 시트에서의 패딩을 얻고 있었다 것 같습니다 내 특정 경우

했다 전시. 이 코드

:

QMargins(0, 0, 0, 0) 0 QRect(0,0 62x31) 
QMargins(7, 1, 7, 1) 0 QRect(7,1 36x31) 
:

qDebug() << label->contentsMargins() << label->margin() << label->contentsRect(); 
label->show(); 
qDebug() << label->contentsMargins() << label->margin() << label->contentsRect(); 

이 출력을 생성

관련 문제