QT QTableView使用自定义数据模型

  1. 创建一个Qt工程-QMainWindow

  2. 添加控件
    在这里插入图片描述

  3. 给按钮加上点击事件

  4. 创建数据结构
    4.1 使用结构体或类定义自己的数据结构
    在这里插入图片描述
    4.2 声明数据结构体

#pragma once
#ifndef MYDATA_H
#define MYDATA_H
#include<QString>
struct Data {
   
	int index;
	QString name;
	QString sex;
};
#endif // MYDATA_H
  1. 创建TableModel
    在这里插入图片描述
    2017没有 itemmodel,这里选择了qtclass
    在这里插入图片描述
    注意基类,一定是 QAbstractTableModel
    在这里插入图片描述
    工程目录中会新增mytablemodel.h和mytablemodel.cpp文件
    在这里插入图片描述

  2. 引用Data
    在mydatablemodel.h中引用Data.h文件,并声明数据集合

#pragma once

#ifndef MYTABLEMODEL_H
#define MYTABLEMODEL_H

#include "Data.h"
#include <QAbstractTableModel>

class myTableModel  : public QAbstractTableModel
{
   
	Q_OBJECT

	//返回表头的数据
	QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;

	//返回模型中行的数量
	int rowCount(const QModelIndex &parent = QModelIndex()) const override;
	//返回模型中列的数量
	int columnCount(const QModelIndex &parent = QModelIndex()) const override;

	//根据提供的QModelIndex和role来返回对应的数据
	QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;

private:
	QVector<Data> m_list;


public:
	myTableModel(QObject *parent);
	~myTableModel();
};

#endif // MYTABLEMODEL_H
  1. 重写函数
    1. 重写 headerData函数
    2. 重写rowCount
    3. 重写columnCount
    4. 重写data
    5. 新增绑定数据函数
      在MyTableModel类中添加bindData函数
      mytablemodel.h中声明:
void bindData(QVector<MyData> list);

这部分的完整cpp文件

#include "myTableModel.h"
#include "Data.h"
#include <QSize>

void myTableModel::bindData(QVector<Data> list)
{
   
	beginResetModel();
	m_list = list;
	endResetModel();
}

QVariant myTableModel::headerD
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值