2012-03-08 31 views
-1

我在QListWidget的QItemDelegate中繪製QPixmap。每個QListWidgetItem具有不同的維度。裏面QItemDelegate的如何在QListWidget的QItemDelegate中繪製QPixmap中心

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

功能,我要畫的QPixmap與QListWidgetItem內居中對齊。 option.rect()給出了我可以計算中心位置並相應繪製的項目的幾何圖形,但是我想知道這種對齊的更好方法。有人能讓我知道答案嗎?

+1

鑑於所有這些戰略地位Q的,我會認爲這個問題是關於Qt? – 2012-03-08 08:15:26

+0

@gokula可以告訴你想要什麼... – shofee 2012-03-08 11:00:51

+0

@CodyGray是。這是關於Qt的。你也可以看到這個標籤 – 2012-03-08 15:07:16

回答

1

你知道QListWidgetItem的尺寸嗎?如果是這樣,你來就可以粉刷的QPixmap的東西,如:

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

是的,我們可以通過option.rect來計算QListWidgetItem的尺寸。 你提到的代碼就是我剛纔提到的計算自己的代碼。我想知道有沒有更好的方法,除了計算自己 – 2012-03-08 13:45:27

+0

@gokulakrishnangopalakrishnan,更好的方法?國際海事組織,最好的辦法是自己動手,這樣你就可以準確控制它的外觀。我不會將這種簡單的渲染委託給框架(即使對於複雜的渲染框架,我仍然認爲最好的方法是「手動」實現),它使框架故障和侷限性的麻煩少得多。 – 2012-03-08 14:43:33

+0

@Laurant謝謝。我還有一個問題(http://stackoverflow.com/questions/9618912/filtering-mouse-click-event-in-qlistwidget)。如果可能的話,你可以回答嗎? – 2012-03-08 15:06:18