QT treewidget 展开折叠(分支)样式设置

有时候觉得树的分支小三角不好看,可以用qss改变样式。

branch有五个选择:adjoins-item(不邻接),has-siblings(下面还有节点)。open(节点是展开的)。close(节点是关闭的),has-children (有子节点)。结合使用达到自己想要的效果。

实例1

选择 不邻接 就显示图片vline.png。

tree->setStyleSheet("QTreeView::branch:!adjoins-item {border-image: url(:/vline.png);}"

图片是一个竖杠。当树应用之后有这种效果,即不相邻就显示一个竖杠。

 示例2

下面还有节点的就显示一个竖杠

tree->setStyleSheet("QTreeView::branch:has-siblings {border-image: url(:/vline.png);}");

 示例3

结合使用

    tree->setStyleSheet("QTreeView::branch:has-siblings:!adjoins-item {border-image: url(:/vline.png);}" // 下方有节点并且相邻没有节点
                        
                    "QTreeView::branch:has-siblings:adjoins-item {border-image: url(:/branch-more.png);}" // 下方有节点并且相邻有节点
                        
                     "QTreeView::branch:!has-children:!has-siblings:adjoins-item {border-image: url(:branch-end.png) ;}" // 没有孩子节点、下方没有节点并且相邻有节点

                        "QTreeView::branch:has-children:!has-siblings:closed,QTreeView::branch:closed:has-children:has-siblings " 
                        "{border-image: none;image: url(:/stylesheet-branch-closed.png);}"

                        "QTreeView::branch:open:has-children:!has-siblings,"
                        "QTreeView::branch:open:has-children:has-siblings  {border-image: none;image: url(:/stylesheet-branch-open.png);}");

 附一下每个图片的样子

参考官网:

Qt Style Sheets Examples | Qt Widgets 5.15.10 

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: qt treewidget默认展开是指在启动应用程序时,树控件中的所有节点都被展开。 要让qt treewidget默认展开,可以使用QTreeWidget的expandAll()函数。例如: ``` #include <QTreeWidget> int main(int argc, char *argv[]) { QApplication a(argc, argv); QTreeWidget treeWidget; // 在这里添加树节点 treeWidget.expandAll(); treeWidget.show(); return a.exec(); } ``` 希望这个答案对你有帮助。 ### 回答2: Qt中的TreeWidget是一个用于显示树结构数据的控件,它可以按照用户的要求展开和收起树节点。在默认情况下,TreeWidget是不会自动展开的,所有的树节点都是处于收起状态。 如果我们希望TreeWidget在默认情况下展开,我们可以通过以下方式实现: 1. 设置默认的展开状态:我们可以使用TreeWidget的setDefaultItemExpanded函数,将展开状态设置为默认展开。调用setDefaultItemExpanded(true)可以使所有的树节点默认展开。 2. 在插入节点时设置展开状态:当我们在TreeWidget中插入节点时,可以通过设置QTreeWidgetItem的setExpanded函数来设置节点的展开状态。我们可以设置每个节点的展开状态,以满足我们的需求。 3. 设置特定节点的展开状态:如果我们只想展开部分节点,可以使用TreeWidget的setItemExpanded函数,通过设置指定节点的展开状态。我们可以获取目标节点并设置展开状态为true或false。 需要注意的是,默认展开所有节点可能会导致界面过于繁杂,不可控。因此,我们应该根据实际需求和用户体验,合理设置TreeWidget展开状态。 总之,QtTreeWidget默认是所有节点都处于收起状态的,我们可以通过setDefaultItemExpanded或者setItemExpanded函数来设置节点的展开状态,以满足我们的需要。 ### 回答3: QtQTreeWidget 是一个用于展示树形结构数据的控件,默认情况下,它是展开的。 QTreeWidget 是继承自 QTreeView 的,而 QTreeView 默认的展开方式是展开所有的项。这意味着当你使用 QTreeWidget 控件时,它的所有项都会默认展开显示。 这种默认展开的方式对于小规模的树形结构来说是很方便的,用户可以一目了然地看到所有的子项。但是对于大规模的树形结构来说,可能会导致界面过于复杂和拥挤。 如果你希望修改默认展开的行为,可以使用 QTreeWidgetItem 的 setExpanded() 方法来控制项的展开状态。通过设置该方法的参数为 False,可以将某个项默认设置为不展开的状态。 另外,你也可以使用 QTreeView 的 expandAll() 方法来展开所有的项,或者使用 collapseAll() 方法来折叠所有的项。 总的来说,QtQTreeWidget 默认是展开的,但你可以通过设置项的展开状态来修改默认展开的行为,以满足你的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值