2017-10-19 112 views
1

如何在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)具有相同的屬性)。

回答

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_()) 
相關問題