自定义QTreeView项目的复选框



我遇到了以下情况:我需要创建一个自定义树控件,它的复选框也是自定义的。我已经通过使用样式表轻松地对树控件进行了大部分自定义;我已经成功地将复选框添加到QTreeView的项目中,但在自定义它们时遇到了很大的问题——我需要为选中状态显示一个自定义图像,为未选中状态显示另一个。

我得出结论,可以做到这一点的地方是在我的QStyledItemDelegate子类中,在绘制事件中(即CheckBoxItemDelegate::paint)。我需要的是显示该项目的文本、图标和复选框。但问题是:
-我无法获得项目的样式(我使用样式表设置),否则我的文本可能会被绘制成不正确的颜色
-我不知道每个子项的矩形(复选框、图标、文本)
-我不知道如何获取项目的图标(给定其QModelIndex)来绘制它。

附言:我已经对QTreeView进行了子类化(很明显),而且,当我使用QFileSystemModel时,我也对它进行了子类别化,以便为它添加复选框功能。

有人能帮我吗?QStyledItemDelegate::绘制用于更改树项复选框的视觉效果的正确位置吗?如果是,你能给我一个小例子吗?我该怎么做?

这就是我在QTreeView中使用两个图像(睁开眼睛/闭上眼睛,表示其可见性状态)而不是复选框来呈现可检查项目的方式:

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

当然,项目应该设置为可检查。希望这能有所帮助。

最新更新