2012-03-22 45 views
6

我有以下情況:我需要創建一個自定義樹控件,其複選框也是自定義的。我通過使用樣式表很容易地爲樹控件做了大部分自定義;我已經成功地將複選框添加到QTreeView的項目中,但是我在定製它們時遇到了很大的問題 - 我需要爲已選狀態顯示自定義圖像,另一個爲未選中狀態。自定義QTreeView的項目的複選框

我得出這個結論的地方是在我的子類QStyledItemDelegate中,在paint事件中(即CheckBoxItemDelegate :: paint)。我需要的是顯示項目的文本,圖標和複選框。但問題是:
- 我無法獲得項目的樣式(我使用樣式表設置) - 否則我的文本可能會使用不正確的顏色繪製;
- 我不知道每個子項目(複選框,圖標,文本)的反義詞;
- 我不知道如何獲得一個項目的圖標(給定其QModelIndex)來繪製它。

P.S.我已經將QTreeView分類了(很明顯),並且,因爲我正在使用QFileSystemModel,所以我也將其分類爲了將複選框功能添加到它。

有人可以幫我嗎? QStyledItemDelegate ::繪製適當的位置來改變樹項目複選框的視覺效果嗎?如果是的話,你可以給我一個小例子或者什麼,我該怎麼做?

回答

7

這是我的呈現方式可檢查項QTreeView則裏面有兩個圖像(眼睛開/眼閉一隻眼,以表示自己的知名度狀態),而不是一個複選框:

ui.myTreeView->setStyleSheet(
    "QTreeView::indicator:unchecked {image: url(:/icons/eye_grey.png);}" 
    "QTreeView::indicator:checked {image: url(:/icons/eye.png);}" 
); 

項目應設置爲可檢查的,課程。希望這可以幫助。

+0

就是這樣!非常感謝! – Feoggou 2012-03-23 08:52:14