如何在QTreeView或QListView中设置ItemFlag?

2024-10-06 09:47:05 发布

您现在位置:Python中文网/ 问答频道 /正文

更新1: 基于QFileSystemModel()的QTreeView

如何在指定的树项目上“设置标志”

在子类QFileSystemModel()中

class MyTreeModel(QFileSystemModel):
    def __init__(self, parent=None):
        super(MyTreeModel, self).__init__(parent)
        # fake code:
        if current_index.parent() == treeView.rootIndex():
            # it is a second level folder.
            # set this tree item not selectable.
            current_index.setFlags(^ Qt.ItemIsSelectable)

Tags: 项目selfnoneindexinit标志defcurrent
1条回答
网友
1楼 · 发布于 2024-10-06 09:47:05

我从这里得到了灵感: TreeView in Python+QT

与setData()类似,您不能将setData()设置为QFileSystemModel,但可以修改data()以在从模型读取数据时添加代码

不能直接将flags()设置为QFileSystemModel,但可以修改flags()以更改返回的数据

class MyTreeModel(QtWidgets.QFileSystemModel):
    #...
    def flags(self, index):
        flags = super(MyTreeModel, self).flags(index)
        # Determine directory level.
        if self.index_level(index) == 2:
            flags = flags ^ QtCore.Qt.ItemIsSelectable
        return flags

相关问题 更多 >