我尝试实现一个自己的模型来表示树,以便 QT 视图可以访问我的数据库实体(我不可能使用 QT 的 SQL 支持,所以我必须处理模型)。 它工作得很好,因为我只使用了一张桌子,但现在我正在努力将其适应树模型。
存在一种类型“A”的实体,每个实体都有任意数量的子实体(另一种实体类型/表),此处称为“B”。
一开始,树视图什么也没有显示,但是当我对同一模型使用表格视图时,至少会显示空单元格。 现在程序在启动后或多或少会直接关闭。
我想使用我自己的委托(第一列中适用于旧表模型的删除按钮),并且我不想使用 QStandardItemModel,因为我必须为每个实体的每列管理一个项目。
我已经研究过并且非常确定如果我实施它会起作用:
columnCount
rowCount
index
parent
data
flags
headerData
其中第一个行为根据父索引而有所不同,因此例如顶级 (
QModelIndex()
) 的 rowCount 返回 A 实体的计数,对于 A 实体的任何索引,返回子 B 实体的数量。
我认为主要问题在于我的
index
和parent
的过载。我使用索引的内部指针来存储我在父方法中返回的父索引。
我尝试了一个非常简单的示例,其中包含指定数量的行和列,其中数据方法仅返回格式化行和列的字符串。 当我启动示例几秒钟时,会显示一个包含我的数据的表格,然后应用程序关闭而不进行回溯。
进程已完成,退出代码为 -1073741819 (0xC0000005)无论我在终端还是 PyCharm 中运行程序,都不会生成回溯。
Qt.DisplayRole
也没有显示任何东西。
QAbstractItemModelTest
venv 中的版本:Python:3.10.8