QTreeView/qabstractemmodel-添加项并使用beginInsertRows

QTreeView/qabstractemmodel-添加项并使用beginInsertRows,qt,qt4,qtreeview,qabstractitemmodel,Qt,Qt4,Qtreeview,Qabstractitemmodel,我正在基于QabstracteModel实现我的模型,并将其与QTreeView一起使用以显示分层数据。数据存储在sqlite表中 我的问题是在添加子节点时如何调用beginInsertRows。 假设我有一些父节点,它包含10个子节点。我想添加新的子节点(在末尾) 我是这样做的: beginInsertRows(parentIndex, currentNodesCount, currentNodesCount); // actual inserting endInsertRows() Cur

我正在基于QabstracteModel实现我的模型,并将其与QTreeView一起使用以显示分层数据。数据存储在sqlite表中

我的问题是在添加子节点时如何调用beginInsertRows。 假设我有一些父节点,它包含10个子节点。我想添加新的子节点(在末尾)

我是这样做的:

beginInsertRows(parentIndex, currentNodesCount, currentNodesCount);
// actual inserting
endInsertRows()
CurrentNodeCount包含值10,即此子节点中的行数。 新节点将被放置在第11个位置(从0开始计算第10个)

这个逻辑正确吗

谢谢你的帮助


我还想知道如何使用beginRemoveRows

这是否正确:

beginRemoveRows(parentIndex, currentRow, currentRow);
// delete record
endRemoveRows();
currentRow包含从0开始计数的已删除节点列表中的位置。

是,就是它


这是你唯一的问题吗?

是的,谢谢。修改记录后如何刷新视图?发出数据更改(…,…)?您将在Qt文档()中找到关于模型子类化的很好的指南。如“可调整大小的模型”一节所述,在大多数情况下,begin**()和end**()应该足以告诉连接的视图(或任何其他组件)数据结构已更改。请注意,如果您对子类化的评论存在错误,请毫不犹豫地将您的问题标记为“已回答”link@SteveLorimer更新链接: