2024-03-29 13:04:01 发布
网友
我使用QTreeView和QItemDelegate来重新实现大多数绘制例程。但是,展开/折叠按钮和同级/子级线是由其他绘制例程自动绘制的。在
是什么在画他们,我如何控制它?在
编辑:
现在,Qt按以下顺序绘制QTreeView项:
[展开按钮]--[复选框]--[树的其余部分]
我想按这个顺序画:
[复选框]--[展开按钮]--[树的其余部分]
问题是我在QItemDelegate中的所有绘制都在展开按钮的右侧。在
这些行是由QTreeView.drawRow,分支和展开图标在drawBranches中绘制。重新实现它什么都不做,你将摆脱任何自动绘制的东西:
def drawBranches(self,painter,rect,index): pass
不幸的是,在绘制过程中简单地交换按钮和复选框是行不通的,因为点击复选框就会触发按钮,反之亦然。在
您可以使用style sheet更改它们。这是来自样式表引用中的Customizing QTreeView示例:
QTreeView::branch:has-siblings:!adjoins-item { border-image: url(vline.png) 0; } QTreeView::branch:has-siblings:adjoins-item { border-image: url(branch-more.png) 0; } QTreeView::branch:!has-children:!has-siblings:adjoins-item { border-image: url(branch-end.png) 0; } QTreeView::branch:has-children:!has-siblings:closed, QTreeView::branch:closed:has-children:has-siblings { border-image: none; image: url(branch-closed.png); } QTreeView::branch:open:has-children:!has-siblings, QTreeView::branch:open:has-children:has-siblings { border-image: none; image: url(branch-open.png); }
其中png文件名是要使用的图像。在
这些行是由QTreeView.drawRow,分支和展开图标在drawBranches中绘制。重新实现它什么都不做,你将摆脱任何自动绘制的东西:
不幸的是,在绘制过程中简单地交换按钮和复选框是行不通的,因为点击复选框就会触发按钮,反之亦然。在
您可以使用style sheet更改它们。这是来自样式表引用中的Customizing QTreeView示例:
其中png文件名是要使用的图像。在
相关问题 更多 >
编程相关推荐