动态树模型(Qt)
我使用一个动态树模型(Qt),qt,qt4,pyqt4,pyside,qabstractitemmodel,Qt,Qt4,Pyqt4,Pyside,Qabstractitemmodel,我使用一个qabstractemodel来表示一个树模型(最多包含几个被追踪的项)。数据本身是动态的,在任何时候节点可能出现或消失,值(或其他角色)可能会改变 对模型进行更改很容易;我想知道如何有效地发出信号,以便通知QTreeView更改(它的大多数节点都已折叠) 在任何给定时间,都可能同时发生多个更改(行插入和/或删除) 使用beginInsertRows/endInsertRows/beginRemoveRows/endRemoveRows-是否应该有一种方法来通知视图多个更改 就绩效而言
qabstractemodel
来表示一个树模型(最多包含几个被追踪的项)。数据本身是动态的,在任何时候节点可能出现或消失,值(或其他角色)可能会改变
对模型进行更改很容易;我想知道如何有效地发出信号,以便通知QTreeView更改(它的大多数节点都已折叠)
在任何给定时间,都可能同时发生多个更改(行插入和/或删除)
beginInsertRows
/endInsertRows
/beginRemoveRows
/endRemoveRows
-是否应该有一种方法来通知视图多个更改beginResetModel
/endResetModel
是否一定效率较低李>
QStandardItemModel
有什么好处吗?(针对本特定案例)QStandardItemModel
将始终导致更大的内存开销。这是一个方便的类,如果它完全符合您的需要,它是有意义的。事实上,如果你对如何使用它不小心,它的效果会更糟
例如,如果您通过迭代深度优先并首先删除最远的子项来删除项,那么QStandardItemModel
无法预见未来-即,您确实希望删除所有这些子项的共同祖先,并将不必要地发出大量更改事件。您可以在自己的模型中正确地处理它,或者如果您只是删除公共父对象而不涉及子对象,因为它们也将被隐式删除