2010-11-26 8 views
2

Qt에서 사용자 정의 플러그인을 개발 중이며 거기에 이미지가있는 위젯을 빌드해야하는 상황이 있습니다. 그래서 나는 커스텀 위젯을위한 기본 클래스로서 QLabel을 사용하고있다. 다음은 페인트 이벤트 코드입니다.QLabel에서 이미지 크기를 조정하는 방법

 QPixmap pic("/general/source/pic.png"); 
    setAutoFillBackground(true); 
    QPalette palette; 
    palette.setBrush(QPalette::Window, QBrush(pic)); 

    this->setPalette(palette); 

이제 이미지가 QLabel에 렌더링되지만, 원하는 것은 아닙니다.

  1. 이미지를 QLabel의 크기로 확대하고 싶습니다.
  2. QLabel의 크기가 이미지의 크기를 초과하면 이미지가 반복되는 것을 원하지 않습니다.

도와주세요. 당신이 당신이 당신의 QBrush에 전달할 수있는 다른 QPixmap을 반환

pic.scaled (width, height, Qt::IgnoreAspectRatio, Qt::FastTransformation) 

를 사용하여 브러시를 설정하기 전에 당신이 당신의 통제 당신이 당신의 픽스맵을 확장 할 수의 크기를 얻을 수 있습니다 가정

답변

3

.

참고로, 스타일 시트를 사용하여 컨트롤의 테두리 이미지를 설정할 수도 있습니다.

+0

이 나를 위해 작동하지하지 않는 QLabel 기능을 사용 :( – chai

+0

정확하게 작동하지 않았다 무엇? 이미지가 확장되지 않았다? 그것은 제대로 확장되지 않았다? 당신이 할 수있는 ' – Liz

+1

좋아 .. 뭐가 잘못되었는지 .. 올바른 코드는 크기 조정 : pic.scaled (너비, 높이, Qt :: IgnoreAspectRatio, Qt :: FastTransformation) 그리고 나서 display scaled – chai

-1

맞춤 위젯 클래스가있는 경우 paintEvent를 재정 의하여 그 시점에서 적절한 그림을 그릴 수 있습니다. 픽스맵을 적절한 크기로 조절하고 드로잉을 끝내기 위해 부모의 클래스를 호출 할 수 있는지, 아니면 직접 다해야하는지 모르겠습니다.

2

시도가

setScaledContents(true); 
+0

픽스맵을 자르려면 작동하십시오. 큰 픽스맵을 작은 장소에 넣으려고하면 잘립니다. –

관련 문제