如何在QTreewidget中设置打开/关闭图标

时间:2017-10-19 15:37:54

标签: python qt pyqt icons qtreewidget

如何在QTreeWidget

中管理打开和关闭的图标事件

我有这段代码:

iconNameOpen="folder"
iconNameClose="folder_orange_open"

if ID>0:#file
    iconNameFile="file_important"
    icon=QIcon(':/manageinc/svg/reinhardticons/filesystems/{}.svg'.format(iconNameFile))
    item.setIcon(0,icon)
else:
    icon=QIcon(':/manageinc/svg/reinhardticons/filesystems/{}.svg'.format(iconNameOpen))
    item.setIcon(0,icon)
    #how manage when only this folder is opened or close?

如果我做样式表,我会查看具有相同属性的文件和文件夹(ID> 0或< 0)。

1 个答案:

答案 0 :(得分:0)

您可以使用itemExpandeditemCollapsed信号来更改图标。下面的演示脚本使用QStyle来创建图标,但您可以按照自己喜欢的方式进行操作:

import sys
from PyQt5.QtWidgets import *

class Window(QTreeWidget):
    def __init__(self):
        super().__init__()
        style = QApplication.style()
        self.dir_open = style.standardIcon(QStyle.SP_DirOpenIcon)
        self.dir_closed = style.standardIcon(QStyle.SP_DirClosedIcon)
        self.file_all = style.standardIcon(QStyle.SP_FileIcon)
        for index in '1234':
            parent = QTreeWidgetItem(self, ['Dir' + index])
            parent.setIcon(0, self.dir_closed)
            for item in 'ABC':
                child = QTreeWidgetItem(parent, ['File' + index + item])
                child.setIcon(0, self.file_all)
        self.itemExpanded.connect(self.handleExpanded)
        self.itemCollapsed.connect(self.handleCollapsed)

    def handleExpanded(self, item):
        item.setIcon(0, self.dir_open)

    def handleCollapsed(self, item):
        item.setIcon(0, self.dir_closed)

if __name__ == "__main__":

    app = QApplication(sys.argv)
    window = Window()
    window.setGeometry(600, 50, 400, 300)
    window.show()
    sys.exit(app.exec_())