• 10789阅读
  • 5回复

TreeModel动态变化在QTreeView不显示的问题 [复制链接]

上一主题 下一主题
离线leeco
 
只看楼主 倒序阅读 楼主  发表于: 2009-06-28
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
我在Qt Demo中提供的simpletreemodel那个例子上略作了修改,给TreeModel增加了一个addItem的接口,当我按下一个按钮的时候就在根节点下面增加一个新项,实际运行过程中通过设置断点发现确实也执行了添加,但是界面上的QTreeView就是没有显示,不知为何?

  1. #ifndef TREEMODEL_H
  2. #define TREEMODEL_H
  3. #include <QAbstractItemModel>
  4. #include <QModelIndex>
  5. #include <QVariant>
  6. class TreeItem;
  7. class TreeModel : public QAbstractItemModel
  8. {
  9.     Q_OBJECT
  10. public:
  11.     TreeModel(const QString &data, QObject *parent = 0);
  12.     ~TreeModel();
  13.     QVariant data(const QModelIndex &index, int role) const;
  14.     Qt::ItemFlags flags(const QModelIndex &index) const;
  15.     QVariant headerData(int section, Qt::Orientation orientation,
  16.                         int role = Qt::DisplayRole) const;
  17.     QModelIndex index(int row, int column,
  18.                       const QModelIndex &parent = QModelIndex()) const;
  19.     QModelIndex parent(const QModelIndex &index) const;
  20.     int rowCount(const QModelIndex &parent = QModelIndex()) const;
  21.     int columnCount(const QModelIndex &parent = QModelIndex()) const;
  22.     void addItem(QList<QVariant> data);  /*只要此处为新增加*/
  23. private:
  24.     void setupModelData(const QStringList &lines, TreeItem *parent);
  25.     TreeItem *rootItem;
  26. };
  27. #endif
离线shiroki

只看该作者 1楼 发表于: 2009-06-28
每次对model的数据添加之前要调 beginInsertRows, 添加后要调endInsertRows
--
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
离线leeco
只看该作者 2楼 发表于: 2009-06-28
非常感谢,已解决
离线jasmine007
只看该作者 3楼 发表于: 2010-03-04
怎么解决的?
咋不贴出來咧?
离线qijialin
只看该作者 4楼 发表于: 2011-11-23
怎么解决的呀???我的model里面的数据是从数据库读出来的,修改了数据库后,Qtreeview不能动态的更新
离线郝霞的
只看该作者 5楼 发表于: 2012-05-29
强烈渴望楼主把解决办法贴出来,好东西哇
快速回复
限100 字节
 
上一个 下一个