- 編程改變生活:用PySide6/PyQt6創建GUI程序(進階篇·微課視頻版)
- 邢世通編著
- 1247字
- 2024-12-31 19:11:37
1.3 樹結構控件QTreeWidget及其項QTreeWidgetItem
在PySide6中,使用QTreeWidget類表示樹結構控件,樹結構控件由一列或多列組成。樹結構控件有一個或多個頂層項,頂層項下面有任意多個子項,子項下面可以繼續有子項,頂層項沒有父項。與列表控件和表格控件不同,樹結構的各個項之間有層級關系,可以折疊和展開。
使用QTreeWidgetItem類表示樹結構控件的項,使用QTreeWidgetItem類可以定義項中的文字和圖標。
1.3.1 樹結構控件QTreeWidget
在PySide6中,使用QTreeWidget類創建樹結構控件。QTreeWidget類是QTreeView類的子類,其繼承關系圖如圖1-1所示。QTreeWidget類的構造函數如下:
QTreeWidget(parent:QWidget=None)
其中,parent表示父窗口或父控件
QTreeWidget類的常用方法見表1-8。
表1-8 QTreeWidget類的常用方法

續表

在PySide6中,QTreeWidget類的信號見表1-9。
表1-9 QTreeWidget類的信號

1.3.2 QTreeWidgetItem類
在PySide6中,使用QTreeWidgetItem類創建樹結構的項,QTreeWidgetItem類的構造函數如下:
QTreeWidgetItem(type=QTreeWidgetItem.Type) QTreeWidgetItem(QTreeWidget,type=QTreeWidgetItem.Type) QTreeWidgetItem(Sequence[str],type=QTreeWidgetItem.Type) QTreeWidgetItem(QTreeWidget,Sequence[str],type=QTreeWidgetItem.Type) QTreeWidgetItem(QTreeWidgetItem,type=QTreeWidgetItem.Type) QTreeWidgetItem(QTreeWidget,QTreeWidgetItem,type=QTreeWidgetItem.Type) QTreeWidgetItem(QTreeWidgetItem,Sequence[str],type=QTreeWidgetItem.Type) QTreeWidgetItem(QTreeWidgetItem,QTreeWidgetItem,type=QTreeWidgetItem.Type)
其中,type的取值為QTreeWidgetItem.Type(默認值,值為1)或QTreeWidgetItem.UserType(值為1000),QTreeWidgetItem.UserType也是用戶自定義類型的最小值;Sequence[str]表示字符串序列,即各列上的文字;當第1個參數為QTreeWidget時表示項添加到樹結構控件中;當第1個參數為QTreeWidgetItem時表示父項,新創建的項作為子項添加到父項下;當第2個參數為QTreeWidgetItem時表示將新創建的項插入該項的下面。
QTreeWidgetItem類的常用方法見表1-10。
表1-10 QTreeWidgetItem類的常用方法

在表1-10中,QTreeWidgetItem.ChildIndictorPolicy的枚舉值為QTreeWidgetItem.ShowIndicator(無論是否有子項都顯示標識)、QTreeWidgetItem.DontShowIndicator(使有子項,也不顯示標識)、QTreeWidgetItem.DontShowIndicatorWhenChildless(當沒有子項時,不顯示標識)。
【實例1-10】 創建一個窗口,該窗口包含一個樹結構控件、一個標簽控件。向樹結構控件中添加兩列數據,如果選中包含兩列數據的項,則標簽顯示對應的信息,代碼如下:

運行結果如圖1-29所示。

圖1-29 代碼demo10.py的運行結果
1.3.3 使用Qt Designer創建樹結構控件
在PySide6中,可以使用Qt Designer在窗口中創建樹結構控件。
【實例1-11】 使用Qt Designer設計一個包含樹結構控件的窗口,向樹結構控件中添加兩列數據。操作步驟如下:
(1)打開Qt Designer軟件,創建一個Widget類型的窗口,如圖1-30所示。

圖1-30 創建的窗口
(2)將工具箱中的Tree Widget控件拖曳到主窗口,如圖1-31所示。
(3)選中主窗口上的Tree Widget控件,右擊,在彈出的菜單欄中選擇“編輯項目”,此時會彈出一個“編輯樹窗口部件”對話框,如圖1-32和圖1-33所示。

圖1-31 拖曳Tree Widget控件

圖1-32 右擊后彈出的菜單

圖1-33 “編輯樹窗口部件”對話框
(4)在“編輯樹窗口部件”對話框的“列”選項卡中,單擊左下角的加號圖標可以為樹結構控件添加列,單擊左下角的減號圖標可以刪除當前列。添加兩列,如圖1-34所示。

圖1-34 為樹結構控件添加列
(5)在“編輯樹窗口部件”對話框的“項目”選項卡中,單擊左下角的加號圖標可以為樹結構控件添加項,單擊左下角的減號圖標可以刪除當前行,中間的圖標表示添加當前項的子項。依次添加項,如圖1-35所示。

圖1-35 為樹結構控件添加項
(6)在“編輯樹窗口部件”對話框中,單擊“確定”按鈕,可查看已經添加項的樹結構控件,如圖1-36所示。
(7)修改主窗口的標題,將主窗口的布局設置為水平布局,如圖1-37所示。
(8)將設計的窗口文件命名為demo11.ui,并保存在D盤的Chapter1文件夾下,然后在Windows命令行窗口將demo11.ui文件轉換為demo11.py,操作過程如圖1-38所示。

圖1-36 已經添加項的樹結構控件

圖1-37 設置布局后的主窗口

圖1-38 將demo11.ui文件轉換為demo11.py
(9)編寫業務邏輯代碼,代碼如下:

運行結果如圖1-39所示。

圖1-39 代碼demo11_main.py的運行結果