QTreeWidget节点连线样式设置(QSS+setStyle)

QTreeWidget节点样式设置有两种方式,一种是通过setStyle;一种是通过QSS样式。

  • SetStyle方法

setStyle方法是Qt自带的样式设置函数,使用QStyleFactory::create方法创建windows的样式实例,即能实现节点间虚线连接的样式

#include <QStyleFactory>

setStyle(QStyleFactory::create("windows"));

样式效果:

setStyle方法简单但是有一定的局限性:

  1. 会使得QSS样式设置无效;
  2. 显示的连接线条不能修改;
  3. 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.csdn.net/download/u_topian/88664512

  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值