Pyqt5 QTreeWidget 사용

5346 단어
pyqt5를 사용하여 UI를 작성할 때 QTreeWidget 객체는 미리 정의된 모델의 트리 뷰 디스플레이를 제공합니다.QT 문서는 QTreeWidget에 대해 다음과 같이 정의합니다.
The QTreeWidget class is a convenience class that provides a standard tree widget with a classic item-based interface similar to that used by the QListView class in Qt 3. This class is based on Qt's Model/View architecture and uses a default model to hold items, each of which is a QTreeWidgetItem.
Developers who do not need the flexibility of the Model/View framework can use this class to create simple hierarchical lists very easily. A more flexible approach involves combining a QTreeView with a standard item model. This allows the storage of data to be separated from its representation.
1. QTreeWidget의 실례화
treeWidget = QtWidgets.QTreeWidget(parent)
MainWindow에 QTreeWidget을 추가하는 경우:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.treeWidget = QtWidgets.QTreeWidget(self.centralwidget)
        self.treeWidget.setObjectName("treeWidget")

2. QTreeWidget의 헤더
헤더는 self를 통과합니다.treeWidget.headerItem() 반환, QTreeWidgetItem 유형의 객체
self.treeWidget.headerItem().setText(0, "key")는 헤더 디스플레이 이름을 설정할 수 있습니다.
3. QTreeWidget 하위 트리와 하위 노드 만들기
root1=QtWidgets.QTreeWidgetItem(self.treeWidget) #QTreeWidgetItem object: root 
root1.setText(0,root_name) #set text of root1
para_list=["alpha","beta","gama"]
for i in range(len(para_list)):
    child=QtWidgets.QTreeWidgetItem(root)  #child of root
    child.setText(0,para_list[i])
root2...

QtreeWidgetItem(parent)treeWidget 아래에 루트 노드를 만들고 루트 아래에 여러 개의 하위 노드를 생성합니다
QtreeWidgetItem.setText(column,text)는 어떤 열에 표시할 문자열을 설정합니다. 예를 들어 setText(0,"alpha")는 첫 번째 열에 알파를 표시합니다
QtreeWidgetItem.setFlags(QtCore.Qt.ItemFlags)는 Item의 flag를 설정할 수 있습니다. 예를 들어 선택 가능, 편집 가능 등입니다.
Constant
Value
Description
Qt::NoItemFlags
0
It does not have any properties set.
Qt::ItemIsSelectable
1
It can be selected.
Qt::ItemIsEditable
2
It can be edited.
Qt::ItemIsDragEnabled
4
It can be dragged.
Qt::ItemIsDropEnabled
8
It can be used as a drop target.
Qt::ItemIsUserCheckable
16
It can be checked or unchecked by the user.
Qt::ItemIsEnabled
32
The user can interact with the item.
Qt::ItemIsTristate
64
The item is checkable with three separate states.
4
root.setFlags(QtCore.Qt.NoItemFlags)
NoItemFlags는 이 Item에 아무런 속성이 없음을 나타냅니다.
4.QTreeWidget 노드 선택
QTreeWidget은 기본적으로 단일 선택 노드입니다. 다중 선택 노드를 설정하려면treeWidget를 사용하십시오.setSelectionMode(mode) 설정
설정할 수 있는 선택 모드는 다음과 같습니다. 그 중에서 가장 자주 사용하는 것은SingleSelection과 ExtendedSelection입니다.
Constant
Value
Description QAbstractItemView::SingleSelection 1
When the user selects an item, any already-selected item becomes unselected. It is possible for the user to deselect the selected item. QAbstractItemView::ContiguousSelection 4
When the user selects an item in the usual way, the selection is cleared and the new item selected. However, if the user presses the Shift key while clicking on an item, all items between the current item and the clicked item are selected or unselected, depending on the state of the clicked item. QAbstractItemView::ExtendedSelection 3
When the user selects an item in the usual way, the selection is cleared and the new item selected. However, if the user presses the Ctrl key when clicking on an item, the clicked item gets toggled and all other items are left untouched. If the user presses the Shift key while clicking on an item, all items between the current item and the clicked item are selected or unselected, depending on the state of the clicked item. Multiple items can be selected by dragging the mouse over them. QAbstractItemView::MultiSelection 2
When the user selects an item in the usual way, the selection status of that item is toggled and the other items are left alone. Multiple items can be toggled by dragging the mouse over them. QAbstractItemView::NoSelection 0
Items cannot be selected.
선택한 노드는self를 통과할 수 있습니다.treeWidget.선택한 Item 목록을 selectedItems () 로 되돌려줍니다. 목록에 있는 모든 Item은 QTreeWidgetItem 대상입니다.Item.text (0) 는 item column 0 을 선택한 내용입니다.
Item_list=self.treeWidget.selectedItems()  #return the selected item as a list
for ii in Item_list:
    print ii.text(0)

5.signal 및 slot
QTreeWidget은 신호와 슬롯 메커니즘을 사용하여 QT 아래의 대상과 통신할 수 있으며 마우스 클릭으로 터치하면 다음과 같다.
self.treeWidget.itemClicked['QTreeWidgetItem*','int'].connect(MainWindow.getitem)

getitem () slot 함수에 itemClicked 신호 연결
def getitem(self, item,column):
    Item_list=self.treeWidget.selectedItems()
    for ii in Item_list:
      print ii.text(0)

좋은 웹페이지 즐겨찾기