-  创建一个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







![[BJDCTF2020]EasySearch (SSI注入漏洞)](https://i-blog.csdnimg.cn/direct/12de0930c9f348ff99b7195781fce497.png)










