我使用PyQt使用QAbstractItemModel管理树视图.到目前为止,我已成功实现它,以便我可以加载数据,展开和折叠它,以及编辑值.
然而,我无法做的一件事是围绕插入和移除行.
我想做的简短版本:
当用户编辑特定单元格时,我需要实际删除对象层次结构中的基础项目并将其替换为另一个项目.我在我的模型的setData方法中实现它.因为我不完全理解我在做什么,所以我似乎已经将它设置为段错误.
基本上,我只需要更好地理解数据模型如何与QModelIndex交互,但阅读和重新阅读文档似乎并没有启发我.任何帮助(或指向一个体面的教程的任何链接 - 最好,但不一定,在python中 - 也将非常感激).
以下是我正在使用的代码示例:
#---------------------------------------------------------------------------
def setData(self, index, value, role=QtCore.Qt.EditRole):
"""
Sets the data.
"""
if index.isValid() and (0 <= index.row() < self.rowCount()):
item = index.internalPointer()
value = value.toString()
if index.column() == 5:
# rip out the current object and replace it with a new one of
# the correct datatype.
#next 4 lines get info from my underlying hierarchy of objects
dataType = str(value)
parent = item.get_parent()
name = item.get_name()
row = parent.get_row_of_child(name) …Run Code Online (Sandbox Code Playgroud)