QTreeViewItem展开按钮和兄弟/子行画图

2024-03-29 13:04:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用QTreeView和QItemDelegate来重新实现大多数绘制例程。但是,展开/折叠按钮和同级/子级线是由其他绘制例程自动绘制的。在

是什么在画他们,我如何控制它?在

编辑:

现在,Qt按以下顺序绘制QTreeView项:

[展开按钮]--[复选框]--[树的其余部分]

我想按这个顺序画:

[复选框]--[展开按钮]--[树的其余部分]

问题是我在QItemDelegate中的所有绘制都在展开按钮的右侧。在


Tags: 编辑顺序绘制qt按钮例程复选框qtreeview
2条回答

这些行是由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文件名是要使用的图像。在

相关问题 更多 >