樹形控制項QTreeWidget

2022-04-17 19:45:04 字數 3939 閱讀 4982

1

import

sys2

from pyqt5.qtcore importqt3

from pyqt5.qtwidgets import

, qlabel, qhboxlayout45

6class

demo(qwidget):

7def

__init__

(self):

8 super(demo, self).__init__

()9 self.resize(500, 300)

10 self.label = qlabel('

no click')

1112

self.tree = qtreewidget(self) # 例項化樹形控制項

13self.tree.setcolumncount(1) #將該樹狀控制項的列數設為2(預設為1列)

14self.tree.setheaderlabels(['樹形控制項', '列'])15

#設定每列的標題,如果只有一列的話,則應該通過setheaderlabel(str)方法設定

1617

self.tree.itemclicked.connect(self.change_func)#單擊控制項時發出訊號18#

這個訊號會自動傳遞兩個引數19#

引數1就是被單擊的專案物件。20#

引數2就是單擊的列序號

2122

self.preview = qtreewidgetitem(self.tree) # 例項化乙個專案。引數:指定父類

23self.preview.settext(0, '頂層專案') #給專案設定文字。引數1:列序號

24 self.preview.settext(1, '

頂層專案-1列')

2526 self.preview1 =qtreewidgetitem()

27 self.preview1.settext(0, '

頂層專案1')

28 self.preview1.settext(1, '

頂層專案1-1列')

29self.tree.addtoplevelitem(self.preview1) #把self.preview1專案設定為頂層專案

3031 self.qt5112 =qtreewidgetitem()

32 self.qt5112.settext(0, '

qt 5112 snapshot')

33self.qt5112.setcheckstate(0, qt.unchecked) #設定核取方塊的位置和狀態34#

引數1 核取方塊的位置 列序號35#

qt.unchecked 沒選中36#

qt.checked 選中37#

qt.partiallychecked 部分選中

3839

self.preview.addchild(self.qt5112)#給self.preview新增子專案self.qt511240#

給self.qt5112新增父類

4142 choice_list = ['

macos

', '

android x86

', '

android armv7

', '

sources

', '

ios'

]43 self.item_list =

44for i, c in

enumerate(choice_list):

45 item =qtreewidgetitem(self.qt5112)

46item.settext(0, c)

47item.setcheckstate(0, qt.unchecked)

4849

50 self.test_item =qtreewidgetitem(self.qt5112)

51 self.test_item.settext(0, '

test1')

52 self.test_item.settext(1, '

test2')

5354

self.tree.expandall()

55#

讓所有的項都是以開啟狀態顯示的。注意必須要在所有項都已經例項化好之後再呼叫該方法,如果一開始就呼叫則會沒有效果

5657 self.h_layout =qhboxlayout()

58self.h_layout.addwidget(self.tree)

59self.h_layout.addwidget(self.label)

60self.setlayout(self.h_layout)

6162

defchange_func(self, item, column):

63self.label.settext(item.text(column))64#

item.text(column) 返回專案指定列的文字

6566

if item ==self.qt5112:

67if self.qt5112.checkstate(0) == qt.checked:#

判斷self.qt5112核取方塊的狀態。引數核取方塊位置:列序號68#

self.qt5112.checkstate(0) 返回核取方塊的狀態

69 [x.setcheckstate(0, qt.checked) for x in

self.item_list]

70else

:71 [x.setcheckstate(0, qt.unchecked) for x in

self.item_list]

72else

:73 check_count =0

74for x in

self.item_list:

75if x.checkstate(0) ==qt.checked:

76 check_count += 1

7778

if check_count == 5:

79self.qt5112.setcheckstate(0, qt.checked)

80elif 0 < check_count < 5:

81self.qt5112.setcheckstate(0, qt.partiallychecked) #設定核取方塊為半選中狀態

82else:83

self.qt5112.setcheckstate(0, qt.unchecked)

8485

86if

__name__ == '

__main__':

88 demo =demo()

89demo.show()

PyQt5之QTreeWidget樹形結構

方法 描述setcolumnwidth int column,int width 將指定列的寬度設定為給定的值width inserttoplevelitems 在檢視的頂層索引中插入專案列表 expandall 展開所有的樹形節點 invisiblerootitem 返回樹形控制項中不可見的根選項...

樹形控制項的使用

m tree.modifystyle null,tvs hasbuttons tvs haslines tvs linesatroot 設定 cimagelist pimagelist pimagelist new cimagelist pimagelist create 16,16,ilc mas...

樹形控制項簡單例子

此例項實現的功能 在乙個樹形控制項中顯示雞啄公尺 的簡單結構分層,共有三層,分別為雞啄公尺 各個分類和文章。用滑鼠左鍵單擊改變選中節點後,將選中節點的文字顯示到編輯框中。下面是具體實現步驟 1.建立乙個基於對話方塊的mfc工程,名稱設定為 example31 2.在自動生成的對話方塊模板idd ex...