QTreeWidget 獲取被雙擊的子項的層次路徑


 

 

from PyQt5.QtWidgets import (QApplication, QWidget, QHBoxLayout,
                                QTreeWidget, QTreeWidgetItem,
                                QGroupBox)
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtCore import QSize

class  Bar_Navigation(QWidget):
        def  __init__(self):
            super(Bar_Navigation, self).__init__()
            self.setMinimumHeight(600);
            self.setMinimumWidth(800);
            
            ##layout_main.setMargin(5)
            ##layout_main.setSpace(5)
            self.creat_main_layout()
            self.creat_bar_navigation()
            self.creat_left_box()
         
        def get_bar_list(self):
           
            bar_list_item = []
            bar_list_1 = ["訂貨管理", 
                                            ["客戶訂貨", "庫存訂貨", "供貨商訂貨"]
                                    ]
            bar_list_2 = ["入庫管理", 
                                            ["采購入庫", "訂貨入庫", "其它入庫"]
                                    ]
            bar_list_item.append(bar_list_1)
            bar_list_item.append(bar_list_2)
            return  bar_list_item
            
        def creat_main_layout(self):  
            self.layout_main = QHBoxLayout()
            self.setLayout( self.layout_main)
         
        def creat_bar_list(self, data):
            
            for item in data:
                item_1 =  QTreeWidgetItem( self.tree_Navigation);            
                ##item_1.setText(0,item[0])
                
          ## 設置節點的打開/關閉狀態下的不同的圖片 icon = QIcon() ##節點打開狀態 icon.addPixmap(QPixmap("./logo2.png"), QIcon.Normal, QIcon.On) ##節點關閉狀態   icon.addPixmap(QPixmap("./logo1.png"), QIcon.Normal, QIcon.Off) item_1.setIcon(0, icon) for item_item in item[1]: item_1_1 = QTreeWidgetItem( item_1); item_1_1.setText(0,item_item) self.tree_Navigation.addTopLevelItem(item_1); def creat_bar_navigation(self): self.tree_Navigation = QTreeWidget() self.tree_Navigation.setHeaderLabel("左側導航欄"); self.tree_Navigation.setColumnCount(1) self.tree_Navigation.setMaximumWidth(150); icon_size = QSize(100, 30) self.tree_Navigation.setIconSize(icon_size) ##如果treewidget就一列,該列的寬度默認等於treewidget的寬度,兩列以上的話才起作用. ##self.tree_Navigation.setColumnWidth(0,100); data = self.get_bar_list() self.creat_bar_list(data) self.layout_main.addWidget(self.tree_Navigation) ## QModelIndex ##self.tree_Navigation.doubleClicked.connect(self.showModelSelected) ## QTreeWidgetItem self.tree_Navigation.itemDoubleClicked.connect(self.showSelected) ## QModelIndex def showModelSelected(self, modelIndex): print( modelIndex.row(), modelIndex.column()) ## itemObj:QTreeWidgetItem def showSelected(self, item, column): ##獲得父節點 parent=item.parent() ## 注:本例的深度只有2,因此只有index_top,index_row兩個變量表示路徑 ##根節點上的索引 ## 合理值:非負整數 index_top = 0 ## 子節點上的索引 ##如果為-1則標示是根節點上的項;如果不是-1則標示在子節點上 ## 合理值:非負整數 index_row = -1 ## 如果是要判斷是否為None,則: if parent is None: index_top= self.tree_Navigation.indexOfTopLevelItem(item) else : index_top = self.tree_Navigation.indexOfTopLevelItem(parent) index_row=parent.indexOfChild(item)##獲得節點在父節點中的行號(從0開始) print(index_top, index_row) def creat_left_box(self): self.box_left = QGroupBox('left party') self.layout_main.addWidget(self.box_left) if __name__ == "__main__": import sys app = QApplication(sys.argv) window = Bar_Navigation() window.show() sys.exit(app.exec_())

 

個人注解:   

①、treeWidget.setColumnWidth(0,100)

如果treewidget就一列,該列的寬度默認等於treewidget的寬度,兩列以上的話才起作用,

 

②、如果是treeview獲取點擊的層級路徑:

  modelindex.parent()可以獲得其上級。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM