-
创建一个Qt工程-QMainWindow
-
添加控件
-
给按钮加上点击事件
-
创建数据结构
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
-
创建TableModel
2017没有 itemmodel,这里选择了qtclass
注意基类,一定是 QAbstractTableModel
工程目录中会新增mytablemodel.h和mytablemodel.cpp文件
-
引用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
- 重写函数
- 重写 headerData函数
- 重写rowCount
- 重写columnCount
- 重写data
- 新增绑定数据函数
在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