숨겨진 루트가있는 QTreeWidget, 헤더로 2 개의 자식 및 그 하위에 2 개의 자식이 있습니다. 즉이 예에서는 아마도 관계가 있지만, I는 현재 I는 self.CurrentIndexLabel
를 사용하여 현재 선택된 레이블을 추적 HEADER 1 ITEM 12 setCheckState
데 필요한 item = {}
사전, 변수를 사용QTreeWidget 자식의 자식 setCheckedState를 설정하는 방법은 무엇입니까?
ROOT (HIDDEN)
|
|- HEADER 1 (CHILD, NOT CHECKABLE)
| |
| |- ITEM 11 (CHILD, CHECKABLE)
| |- ITEM 12 (CHILD, CHECKABLE)
|
|- HEADER 2 (CHILD)
| |
| | - ITEM 21 (CHILD, CHECKABLE)
| | - ITEM 22 (CHILD, CHECKABLE)
. 나는 그런처럼 나무를 채운 :
TreeList = ({
'Header1': (('Item11', 'Item12',)),
'Header2': (('Item21', 'Item22',)),
})
item = {'Item12': {'ItemEnabled': 1}} # 0 = No, 1 = Yes
for key, value in TreeList.items():
parent = QTreeWidgetItem(self.ListTreeView, [key])
for val in value:
child = QTreeWidgetItem([val])
child.setFlags(child.flags() | Qt.ItemIsUserCheckable)
child.setCheckState(0, Qt.Unchecked)
parent.addChild(child)
가 처음에 나는 항목이 각 항목에 대한 변수를 압정으로 고정하고, item = {}
사전에 따라 선택 또는 선택 해제 여부를 설정해야 사용자가 항목을 선택하거나 선택 취소 할 때, I 항목이 사용 가능한지 여부를 반영하여 item = {}
사전을 변경해야합니다.
신호 및 슬롯을 사용하여 변경을 감지해야한다고 가정하지만 목록에서 항목을 플래그로 지정하는 방법을 파악하지 못하고 사용자 검사를 반영하는 방법을 모르겠습니다. 또는 TreeList
에있는 항목을 선택 취소하십시오.
1 또는 0을 사용하여 검사를 추적하거나 선택 취소하여 사전 item = {}
을 현재 상태로 업데이트하는 것이 이상적입니다.
이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 저는 파이썬에 익숙하지 않으므로 제발 참아주십시오.
나는'item' DICT의 구조가 생각 : 키로
QTreeWidgetItem
텍스트 값을 사용 (여전히 더 나은 또는,QTreeWidgetItem
객체 자체는) 그래서 예를 들어item = {'Item12': {'ItemEnabled': True}}
같은 딕셔너리가 쉬울 것 부적당하다. 'QTreeWidgetItem' 값을 키로 사용하는 것이 더 쉬울 것이므로'item = { 'Item12': { 'ItemEnabled': True}}'와 같은 사전을 사용하십시오. 또한이 키는'Qt.DisplayRole' 대신'Qt.UserRole'을 사용하여 저장할 수 있습니다. –
이것은 제가 사용하고있는 사전의 매우 단순한 버전입니다. 내가 필요한 20 가지 항목 추적 할. –