Qt系列文章之 QAbstractItemModel(上)

本文介绍了如何使用Qt开发器基于QAbstractItemModel创建自定义的数据模型类,通过Qt Item Model模板简化了过程,但仍然需要对生成的函数进行具体实现。后续文章将详细讲解各个接口的实现。
摘要由CSDN通过智能技术生成

上一篇文章对Qt MVC框架下的模型类进行大致介绍,本文基于QAbstractItemModel来开发第一个用户模型类,重点关注各个接口的实现。

QAbstractItemModel

用户类需要集成基类QAbstractItemModel来开发自己的数据模型,一种方法就是按照之前的方式新建一个CPP类,基类选择QAbstractItemModel,然后在代码之中依次对每个需要实现的函数进行重载定义和实现;不过这样做会比较麻烦,而且由于模型虚方法很多,容易出错和遗漏。Qt开发器提供了更好的方法帮助用户快速开发自己的数据模型。

如下,右键项目选择新建,选择Qt大类中的Qt Item Model:
在这里插入图片描述

输入自己需要定义的类名称如CustomItemModel,基类有三个可以选择,此处选择QAbstractItemModel,下面的属性都勾上。当然这些属性可以根据具体的需要选择是否勾选。
在这里插入图片描述

点击下一步新建,即可生成用户模型类的头文件和源文件,此时Qt会创建好所有需要定义实现的重载函数,头文件代码如下:

#ifndef CUSTOMITEMMODEL_H
#define CUSTOMITEMMODEL_H

#include <QAbstractItemModel>

class CustomItemModel : public QAbstractItemModel
{
   
    Q_OBJECT

public:
    explicit CustomItemModel(QObject *parent = nullptr);

    // Header:
    QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;

    bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole) override;

    // Basic functionality:
    QModelIndex index(int row, int column,
                      const QModelIndex &parent = QModelIndex()) const override;
    QModelIndex parent(const QModelIndex &index) const override;

    int rowCount(const QModelIndex &parent = QModelIndex()) const override;
    int columnCount(const QModelIndex &parent = QModelIndex()) const override;

    // Fetch data dynamically:
    bool hasChildren(const QModelIndex &parent = QModelIndex(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值