2012-03-22 57 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