qtreeview branch 圆角
QTreeView是一个Qt库中的控件,用于显示树形数据结构,它包含一个分支(branch)系统来组织节点。如果你想让QTreeView的分支部分呈现圆角外观,这通常是通过自定义样式表(Qt Style Sheets)来实现的。你可以设置QTreeWidget::item
元素的边框样式,使其看起来像有圆角。
例如,你可以使用以下CSS规则:
QTreeView {
item {
border-radius: <radius_value>; /* 例如 5px */
background-color: ...; /* 设置背景色 */
selection-background-color: ...; /* 选中项颜色 */
}
item:selected {
border-radius: <radius_value>; /* 高亮时保持相同的圆角 */
}
}
这里 <radius_value>
是你想要的圆角半径值。你需要将这些样式应用到你的QTreeView
实例上,通常在窗口初始化时或在特定事件中更新。
QTreeView::branch
QTreeView::branch是用于设置QTreeView中树形结构的分支(branch)的样式的伪类选择器。它可以用于设置分支的背景颜色、字体颜色等属性。根据引用[1]和引用[2]的内容,可以看出QTreeView::branch有以下几个状态:
- 默认状态:没有任何伪类选择器的情况下,应用默认样式。
- adjoins-item状态:当分支与某个item相邻时,设置此状态。可以通过设置background属性来改变背景颜色。根据引用[1]中的样式,adjoins-item状态的背景颜色为绿色。
- closed状态:项目处于关闭状态,即非展开项。可以通过设置color属性来改变字体颜色。根据引用[2]中的样式,closed状态的字体颜色为红色。
此外,根据引用[3]中的样式,还可以根据分支的具体情况设置不同的背景颜色,包括有无兄弟节点、是否相邻、是否有子节点等等。具体的样式设置可以根据实际需求进行调整。
引用[.reference_title]
- 1 2 【翻译 + 整理】Qt样式表详解(10):伪状态[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2
allinsert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - 3 《使用QSS美化QTreeView界面》:系列教程之五[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2
allinsert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
QTreeView::branch 采用样式表 给TreeView的节点间添加虚线
可以通过样式表为 QTreeView 的 branch 元素添加虚线来实现节点间的虚线效果。以下是一个示例:
QTreeView::branch:has-siblings:!adjoins-item {
border-image: url(:/images/treeview-vline.png) 0;
}
QTreeView::branch:has-siblings:adjoins-item {
border-image: url(:/images/treeview-branch-more.png) 0;
}
QTreeView::branch:!has-children:!has-siblings:adjoins-item {
border-image: url(:/images/treeview-branch-end.png) 0;
}
QTreeView::branch:has-children:!has-siblings:closed,
QTreeView::branch:closed:has-children:has-siblings {
border-image: none;
image: url(:/images/treeview-expand.png);
}
QTreeView::branch:open:has-children:!has-siblings,
QTreeView::branch:open:has-children:has-siblings {
border-image: none;
image: url(:/images/treeview-collapse.png);
}
在上面的样式表中,我们使用了 border-image
属性来设置虚线图片作为节点间的分隔符,同时还使用了 image
属性来设置展开和折叠图标。其中,:has-children
伪状态表示该节点有子节点,:has-siblings
表示该节点有兄弟节点,:adjoins-item
表示该节点与其他节点相邻,:closed
表示该节点处于折叠状态,:open
表示该节点处于展开状态。
需要注意的是,为了保证样式表的正确应用,需要将 QTreeView 的 setStyleSheet()
方法中的 QTreeView
替换为 QTreeView::branch
,即:
tree_view.setStyleSheet("""
QTreeView::branch:has-siblings:!adjoins-item {
border-image: url(:/images/treeview-vline.png) 0;
}
...
""")
相关推荐

















