2012-03-08 8 views
-1

QListWidget의 QItemDelegate 안에 QPixmap을 페인팅합니다. 각 QListWidgetItem은 다른 차원입니다. QItemDelegate의QPixmap을 QListWidget의 QItemDelegate 안에 그리는 동안 QPixmap을 중앙에 배치하는 방법

void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) 

함수 내부, 나는 QListWidgetItem 내부 중앙 정렬로 QPixmap 페인트합니다. option.rect()는 중심 위치와 페인트를 적절하게 계산할 수있는 항목의 기하학을 제공하지만이 정렬에 대한 더 나은 접근법을 알고 싶습니다. 대답을 알려주시겠습니까?

+1

이 전략적으로 배치 된 Q를 모두 감안할 때,이 질문은 Qt에 관한 것이라고 가정하겠습니다. –

+0

@gokula는 내가 원하는 것을 정확히 말할 수 있습니다 ... – shofee

+0

@CodyGray Yup. 이것은 Qt에 관한 것입니다. 그 태그도 볼 수 있습니다. –

답변

1

QListWidgetItem의 크기를 알고 계십니까? 그렇다면 QPixmap을 다음과 같이 직접 페인트하십시오.

painter->drawPixmap(
    (item->width() - pixmap->width())/2, 
    (item->heigt() - pixmap->height()), 
    pixmap 
); 
+0

예, QListWidgetItem의 차원을 option.rect로 계산할 수 있습니다. 당신이 언급 한 코드는 정확하게 계산할 때 언급 한 것입니다. 나는 자기 자신을 계산하는 것 이외에 더 좋은 접근법이 있는지 알고 싶었다. –

+0

@gokulakrishnangopalakrishnan, 더 나은 접근법? IMO, 가장 좋은 방법은 직접 해보아 어떻게 보일지 정확하게 제어 할 수있게하는 것입니다. 이런 종류의 단순한 렌더링을위한 프레임 워크에 위임하지는 않을 것입니다. (복잡한 경우에도 여전히 가장 좋은 방법은 "수동으로"하는 것입니다.) 프레임 워크의 글리치와 제한 사항에 대한 두통이 줄어 듭니다. –

+0

@Laurant thanks. 질문이 하나 더 있습니다 (http://stackoverflow.com/questions/9618912/filtering-mouse-click-event-in-qlistwidget). 가능하다면 대답 해 주시겠습니까? –