• 5847阅读
  • 3回复

关于QTreeview使用model的释放问题 [复制链接]

上一主题 下一主题
离线yleesun
 

只看楼主 倒序阅读 楼主  发表于: 2009-06-25
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
看来 下QT自带例子中的simpletreemodel的例子,发现在treemodle中的setupModelData函数中创建了tree中所有的item:
parents.last()->appendChild(new TreeItem(columnData, parents.last()));
其中的item都是new出来的。

我需要通过setmodel方法刷新treeview的内容,这样没setmodle一次,就会new很多item,但是不知道在什么地方释放?
应该是在setmodle之前把前一次的item释放掉,这个工作难到时treeview或者treemodle自己做了?

离线shiroki

只看该作者 1楼 发表于: 2009-06-25
为什么需要setModel方法去刷新treeview的内容?? 如果model里的数据改了, 应该有model去delete那些item, view是不管数据的。
你这样多次调用setModel肯定是不必要的。 如果你没有别的好办法, 应该把老的model拿出来delete掉再set新的
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线yleesun

只看该作者 2楼 发表于: 2009-06-25
如果每次需要自己去删除老modle的item的话,我自己觉得使用treeview还没有使用treewidget方便,因为使用treewidget我自己可以很容易遍历所有item,这样做刷新时,就可以释放所有item,然后再参加。由于很难确定哪些item改变,所以不得不整体clear掉,在创建。
我是这么认为的,请大侠给点意见!
离线shiroki

只看该作者 3楼 发表于: 2009-06-25
。。。前面我说了阿, 去delete model, model会把item都del掉的, 不用自己遍历。
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
快速回复
限100 字节
 
上一个 下一个