QT-自定义QAbstractTableModel,实现在QTableView中插入复选框

本文介绍如何在QT中通过自定义QAbstractTableModel来实现在QTableView中显示复选框的功能。关键在于重写data、setData、rowCount、columnCount和headerData等方法,以支持复选框的显示与交互。
摘要由CSDN通过智能技术生成

效果:

在这里插入图片描述

简述:

主要通过重新实现QAbstractTableModeldeflags来达到预期的效果,实现自定义QAbstractTableModelde的时候,主要重写以下几个函数:
data()
setData()
rowCount()
columnCount()
headerData()

代码:

.h

#ifndef MTABLEMODEL_H
#define MTABLEMODEL_H
#include <QAbstractTableModel>
struct Info
{
   
    QString path;
    bool state;
};

class mTableModel : public QAbstractTableModel
{
   
public:
    mTableModel(QObject *parent);
    void updateData(QList<Info> InfoList);

    QList<Info>m_InfoList;
    Qt::ItemFlags flags(const QModelIndex &index) const;
    bool setData(const QModelIndex &index, const QVariant &value, int role);
    int columnCount(const QModelIndex &parent) const;
    int rowCount(const QModelIndex &parent) const;
    QVariant data(const QModelIndex &index, int role) const;
    QVariant headerData(int section, Qt::Orientation orientation, int role) const;
};

#endif // MTABLEMODEL_H

.cpp

#include "mTableModel.h"
#include <QColor>

mTableModel::mTableModel(QObject *parent):QAbstractTableModel (parent)
{
   

}

void mTableModel::updateData(QList<Info>InfoList) //更新列表数据
{
   
    m_InfoList= InfoList;
    beginResetModel();
    endResetModel();
}

int mTableModel::
QtQTableView是一种用于显示表格数据的控件,而QAbstractTableModelQTableView使用的一种数据模型。如果想要在QTableView展示自定义的数据,需要自定义一个继承自QAbstractTableModel的数据模型。 自定义QAbstractTableModel需要实现以下几个方法: 1. rowCount():返回数据模型的行数。 2. columnCount():返回数据模型的列数。 3. data():返回某一项的数据,可以用来在QTableView展示数据。 4. setData():设置某一项的数据,可以用来在QTableView编辑数据。 5. headerData():返回行或列的标签,可以用来在QTableView显示表头。 6. flags():返回某一项的标志,用来指定该项是否可编辑、是否可选等。 自定义QAbstractTableModel类后,可以将其与QTableView关联,通过setModel()方法来设置数据模型,使QTableView显示自定义的数据。 下面是一个简单的自定义QAbstractTableModel的例子: ```c++ class MyTableModel : public QAbstractTableModel { public: MyTableModel(QObject *parent = nullptr); int rowCount(const QModelIndex &parent = QModelIndex()) const override; int columnCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; Qt::ItemFlags flags(const QModelIndex &index) const override; private: QList<QList<QVariant>> m_data; }; ``` 在这个例子自定义的数据模型类为MyTableModel,其实现了rowCount()、columnCount()、data()、setData()、headerData()和flags()方法。m_data变量用于存储数据。自定义的数据模型类可以在需要使用表格数据的地方创建,并通过setModel()方法将其与QTableView关联起来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值