自定义Model需要重新定义哪些虚函数

2014年3月30日 由 Creater 留言 »

在模式(Model)中的每一个数据元素都有一个模式索引(ModelIndex,可以看做每个项的身份证,如图所示)和一系列称为角色(Roles)的属性。

modelindex-no-parent

  1. 根据跟QModeIndex返回行,即返回这个Model的总行数。
    virtual int rowCount(const QModelIndex &parent = QModelIndex()) const = 0;
  2. 根据跟QModeIndex返回列,即返回这个Model的总列数。
    virtual int columnCount(const QModelIndex &parent = QModelIndex()) const = 0;
  3. data。在界面需要更新的时候调用,返回一个项的任意角色的值。
    virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const = 0;
  4. headerData。当视图组装表头时使用。
        virtual QVariant headerData(int section, Qt::Orientation orientation,
                                    int role = Qt::DisplayRole) const;
  5. setData当用户编辑一个项时调用。
        virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
  6. flags函数。其中在flags函数中给相应的itme增加Qt::ItemIsEditable标记。
        virtual Qt::ItemFlags flags(const QModelIndex &index) const;
  7. index。在模型或者视图为一个特定的子项创建一个QModeIndex时调用。
        virtual QModelIndex index(int row, int column,
                                  const QModelIndex &parent = QModelIndex()) const = 0;
  8. parent。返回一个子项的父亲。
        virtual QModelIndex parent(const QModelIndex &child) const = 0;

参考文献:http://qt-project.org/doc/qt-5/QAbstractItemModel.html

广告位

评论已关闭.