pyqt 在QTreeView里显示图标

21 篇文章 0 订阅

首先要自己构建一个model,其实就是实现抽象类QAbstractItemModel,论述这个过程的文章有很多,比如http://devbean.blog.51cto.com/448512/268468,也可以参考pyqt提供的demo:simpletreemodel.pyw,本文中的例子就是在这个demo的基础上进行改进,实现treemodel显示图标的功能。

 

具体修改的地方在TreeModel类下的data函数里加入以下代码:

        if role == QtCore.Qt.DecorationRole:

            if index.column()>0:                         #只让第一列显示图标,可以根据需要进行调整
                return None

            node = self.nodeFromIndex(index)
            if node.parent() == self.rootItem :     #根节点也不显示图标
                return None          
            if node.childCount()>0:                     #有子节点的就不显示图标
                return None           
            if node is None:
                return None
            else:
                pixmap = QtGui.QPixmap(":/icon1.png")
                if not pixmap.isNull():
                    return QtGui.QIcon("icon1.png")
                return None


由于增加了图片文件,所以还要修改这个项目的资源文件simpletreemodel.qrc,在<qresource>中加上一行关于icon1.png文件的描述,如下所示:

<!DOCTYPE RCC><RCC version="1.0">
<qresource>
   <file>default.txt</file>
   <file alias="icon1.png">icon1.png</file>
</qresource>
</RCC>

在将图片文件icon1.png放到工作目录下, 将其编译 pyrcc4.exe some.qrc -o someqrc.py(如果是python3,还要加上-py3选项) ,成为simpletreemodel_rc.py

再运行程序就可以看到TreeView左侧的树的子节点上带着图标了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值