QT6 源(129)QAbstractListModel 与 QAbstractTableModel:列表模型基类与表格基类的源码阅读与注释

QT6中QAbstractListModel列表模型基类

(1)本类相对于其基类,没有做大的扩展,所以不再测试了

class Q_CORE_EXPORT QAbstractListModel : public QAbstractItemModel
{
    Q_OBJECT //又插入了此宏

protected:

    QAbstractListModel(QAbstractItemModelPrivate & dd, QObject * parent); //有参构造函数

private:

    Q_DISABLE_COPY(QAbstractListModel)

    QModelIndex parent(const QModelIndex & child ) const override; //私有函数不能再被调用了

    int    columnCount(const QModelIndex & parent) const override;

    bool   hasChildren(const QModelIndex & parent) const override;

public:
    explicit QAbstractListModel(QObject * parent = nullptr); //有参构造函数

    ~QAbstractListModel(); //析构函数

    using QObject::parent; //QObject * QObject::parent() const 返回本对象的容器父类

    //Reimplements: QAbstractItemModel::flags(const QModelIndex & index) const.
    Qt::ItemFlags flags(const QModelIndex & index) const override;

    //QModelIndex QAbstractItemModel::index(int row, int column,
    //                          const QModelIndex & parent = QModelIndex()) const = 0;
    //本子类相对于父类,重写此函数的不同之处,就是为形参 2的列参数指定了默认值,因为只有一列。
    //Returns the index of the data in row and column with parent.
    QModelIndex   index(int   row,    int   column = 0, //也是重写的基类成员函数
                        const QModelIndex & parent = QModelIndex()) const override;

    QModelIndex sibling(int row, int column, const QModelIndex & idx) const override;
    //Reimplements: QAbstractItemModel::sibling(int row, int column, QModelIndex & index).

    bool dropMimeData(const QMimeData * data, Qt::DropAction action, //也是重写父类成员函数
                      int row, int column, const QModelIndex & parent) override;
    //Reimplements: QAbstractItemModel::dropMimeData(QMimeData * data,
    //      Qt::DropAction action, int row, int column, QModelIndex & parent).

}; //完结 class QAbstractListModel : public QAbstractItemModel

(2)给出本类的继承关系图

在这里插入图片描述

(3)表格基类里的内容也非常少

class Q_CORE_EXPORT QAbstractTableModel : public QAbstractItemModel
{
    Q_OBJECT //又插入了此宏
    
protected:
    QAbstractTableModel(QAbstractItemModelPrivate & dd, QObject * parent); //有参构造函数
    
private:
    Q_DISABLE_COPY(QAbstractTableModel)
    QModelIndex      parent(const QModelIndex & child ) const override; //禁用了这俩函数
    bool        hasChildren(const QModelIndex & parent) const override;    
    
public:
    explicit QAbstractTableModel(QObject * parent = nullptr); //有参构造函数
    
    ~QAbstractTableModel();  //析构函数
    
    using QObject::parent ;  //QObject * QObject::parent() const 返回本对象的容器父类
    
    //Reimplements: QAbstractItemModel::flags(const QModelIndex & index) const.
    Qt::ItemFlags flags(const QModelIndex & index) const override;
    
    //QModelIndex QAbstractItemModel::index(int row, int column,
    //                          const QModelIndex & parent = QModelIndex()) const = 0;
    //Returns the index of the data in row and column with parent.    
    QModelIndex   index(int row, int column,
                        const QModelIndex & parent = QModelIndex()  ) const override;
    
    //Reimplements: QAbstractItemModel::index(int row, int column, QModelIndex & parent).
    //Returns the index of the data in row and column with parent.
    QModelIndex sibling(int row, int column, const QModelIndex & idx) const override;
    
    bool   dropMimeData(const QMimeData * data, Qt::DropAction action,
                        int row, int column, const QModelIndex & parent) override;
    //Reimplements: QAbstractItemModel::dropMimeData(QMimeData * data,
    //      Qt::DropAction action, int row, int column, QModelIndex & parent).
    

}; //完结 class QAbstractTableModel : public QAbstractItemModel

(4)

谢谢

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangzhangkeji

谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值