簡體   English   中英

自定義QTreeView項目的復選框

[英]Customizing the checkboxes of the items of a QTreeView

我遇到以下情況:我需要創建一個自定義樹控件,其復選框也是自定義的。 我通過使用樣式表輕松地為樹控件進行了大部分自定義; 我已成功將復選框添加到QTreeView的項目中,但我在定制它們時遇到了很大問題 - 我需要為已檢查狀態顯示自定義圖像,而為未檢查狀態顯示另一個圖像。

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

PS我已經將QTreeView(顯然)子類化,並且,當我使用QFileSystemModel時,我也將其子類化,以便為其添加復選框功能。

請問有人幫幫我嗎? QStyledItemDelegate ::繪制適當的位置來更改樹項復選框的視覺效果嗎? 如果是的話,你能給我一個小例子,我怎么能這樣做?

這就是我在QTreeView中使用兩個圖像(睜眼/閉眼,表示其可見性狀態)而不是復選框來呈現可檢查項目的方式:

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

當然,項目應設置為可檢查。 希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM