首页 > 解决方案 > 如何更改 QTreeView 小部件中的图标

问题描述

如何更改这些图标?我在 treeView 设置中找不到改变它的道具。

在此处输入图像描述

标签: c++qtwidgetqt5

解决方案


Qt 中有QTreeView::drawBranches函数。使用此功能,您可以使用指定的在树项目的左侧绘制任意图标QPainter

void QTreeView::drawBranches(QPainter *painter, const QRect &rect,
                             const QModelIndex &index) const

另一种选择是自定义样式表,如文档中所述。使用这些样式表,您可以轻松地将所需的图像添加为图标。

上述文档链接提供了此类自定义的示例:

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);
}

结果,他们得到以下结果:

在此处输入图像描述


推荐阅读