我终于为QTreeView实现了自己的树模型(继承自QAbstractItemModel)。 我所做的蓝图可以在这里找到: http://www.trinitydesktop.org/docs/qt4/itemviews-simpletreemodel.html
所以,我有:
我现在有一个从(1.)生成的树项的树层次结构。此层次结构有数千个项目,我想在运行时将此层次结构插入到现有模型中。 我该怎么做?
(我所拥有的是作为TreeItem指针的c ++树层次结构的根节点,以及必须插入“新子树”的现有模型的QModelIndex)
我从这里找到了modelAboutToBeReset(),modelReset()和endResetModel():http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#beginResetModel
但我不知道这些是否是正确的功能,如果是,那么如何使用它们。
有什么想法吗?
答案 0 :(得分:1)
在从模型中删除实际项目之前,您应该致电modelAboutToBeReset()
。此调用将“冻结”所有视图请求任何数据。删除所有真实项目后,您应该调用endResetModel()
- 它将取消冻结数据请求并强制所有连接的视图更新其内容。
答案 1 :(得分:0)
这就是我所做的:
void
TreeModel::addNewSubTreeToModel( TreeNode* t_rootOfNewTree, TreeNode* t_addNewSubTreeAsChildOfThisItem )
{
beginResetModel();
t_rootOfNewTree->setParent(t_addNewSubTreeAsChildOfThisItem);
t_addNewSubTreeAsChildOfThisItem->addChild(t_rootOfNewTree);
endResetModel();
}