QTreeWidget节点样式设置有两种方式,一种是通过setStyle;一种是通过QSS样式。
-
SetStyle方法
setStyle方法是Qt自带的样式设置函数,使用QStyleFactory::create方法创建windows的样式实例,即能实现节点间虚线连接的样式
#include <QStyleFactory>
setStyle(QStyleFactory::create("windows"));
样式效果:
setStyle方法简单但是有一定的局限性:
- 会使得QSS样式设置无效;
- 显示的连接线条不能修改;
- setStyle的方法也会根据操作系统的而有所不同。
-
QSS样式设置方法
QSS样式设置使用没有使用png图片而是使用SVG图片,因为SVG是矢量图不会在界面尺寸变化时发生失真。
样式效果:
主要代码:
TreeWidget::TreeWidget(QWidget* parent):
QTreeWidget(parent)
{
setIconSize(QSize(32,32));
setColumnCount(1);
setColumnWidth(0,300);
QString sQssStyle = getQssStyle();
setStyleSheet(sQssStyle);
setHeaderHidden(true); //隐藏表头
}
QString TreeWidget::getQssStyle()
{
QString qss = "QTreeWidget::branch:has-siblings:!adjoins-item{ \
image:url(:/icons/branch-line.svg) 0;\
}\
QTreeWidget::branch:has-siblings:adjoins-item{\
image:url(:/icons/branch-more.svg) 0;\
} \
QTreeWidget::branch:!has-children:!has-siblings:adjoins-item{\
image:url(:/icons/branch-end.svg) 0;\
}\
QTreeWidget::branch:has-children:!has-siblings:closed,\
QTreeWidget::branch:closed:has-children:has-siblings{\
border-image:none;\
image:url(:/icons/branch-closed.svg);\
}\
QTreeWidget::branch:open:has-children:!has-siblings,\
QTreeWidget::branch:open:has-children:has-siblings{\
border-image:none;\
image:url(:/icons/branch-open.svg);\
}";
return qss;
}
其中的图片资源()下载链接如下:
https://download.youkuaiyun.com/download/u_topian/88664512