QTreeWidgetItem互斥
时间: 2024-02-24 16:50:37 浏览: 83
Qt QWidget 互斥抽屉模型
根据提供的引用内容,QTreeWidgetItem互斥指的是在QTreeWidgetItem中的复选框只能选一个,即选中一个复选框后,其他复选框都会自动取消选中状态。实现这个功能可以通过设置QTreeWidget的SelectionMode为SingleSelection,然后在QTreeWidgetItem的信号中处理复选框的选中状态即可。
以下是一个简单的示例代码,演示如何实现QTreeWidgetItem的互斥功能:
```python
from PyQt5.QtWidgets import QApplication, QTreeWidget, QTreeWidgetItem
class TreeWidget(QTreeWidget):
def __init__(self):
super().__init__()
self.setColumnCount(1)
self.setHeaderLabel('Tree')
self.setSelectionMode(QTreeWidget.SingleSelection)
self.itemClicked.connect(self.handleItemClicked)
parent1 = QTreeWidgetItem(self, ['Parent 1'])
parent2 = QTreeWidgetItem(self, ['Parent 2'])
child1 = QTreeWidgetItem(parent1, ['Child 1'])
child1.setFlags(child1.flags() | 0x20) # 设置复选框
child2 = QTreeWidgetItem(parent1, ['Child 2'])
child2.setFlags(child2.flags() | 0x20) # 设置复选框
child3 = QTreeWidgetItem(parent2, ['Child 3'])
child3.setFlags(child3.flags() | 0x20) # 设置复选框
child4 = QTreeWidgetItem(parent2, ['Child 4'])
child4.setFlags(child4.flags() | 0x20) # 设置复选框
def handleItemClicked(self, item, column):
if item.checkState(column) == 2: # 如果当前项被选中
for i in range(item.parent().childCount()):
if item.parent().child(i) != item: # 如果不是当前项
item.parent().child(i).setCheckState(column, 0) # 取消选中状态
if __name__ == '__main__':
app = QApplication([])
tree = TreeWidget()
tree.show()
app.exec_()
```
阅读全文