pyqt5 QtreeView删除子节点
时间: 2024-11-27 08:16:23 浏览: 15
在PyQt5中,`QTreeView`使用`QAbstractItemModel`作为数据源,删除子节点通常是通过修改模型来完成的。如果你有一个`QStandardItemModel`,可以这样做:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QTreeView, QStandardItemModel, QStandardItem
# 创建模型和节点
model = QStandardItemModel()
parent_item = model.invisibleRootItem()
child_item_1 = QStandardItem("子节点1")
child_item_2 = QStandardItem("子节点2")
# 将子节点添加到父节点
parent_item.appendChild(child_item_1)
parent_item.appendChild(child_item_2)
# 创建QTreeView,并设置模型
view = QTreeView()
view.setModel(model)
# 删除指定子节点(这里以删除第一个子节点为例)
parent_item.removeChild(child_item_1) # 使用parent_item.removeChild方法移除子节点
# 更新视图以反映新的模型状态
view.model().dataChanged.emit(parent_item.index(), parent_item.index()) # 触发数据变化信号
# 如果你想删除所有子节点,可以遍历parent_item的children:
for child in parent_item.children():
parent_item.removeChild(child)
# 同样,更新视图
view.model().dataChanged.emit(parent_item.index(), parent_item.index())
```
阅读全文