代码来自上面的文章
// .h
#include <QTableView>
#include <QStandardItemModel>
/**
* @brief The DBTableView class
* 自定义的DBTableView类,继承自QTableView
*/
class DBTableView
: public QTableView
{
public:
explicit DBTableView(QWidget * _parent_widget = nullptr);
~DBTableView() override;
private:
QStandardItemModel* db_table_model_; ///< 标准数据模型
};
// .cpp
#include "dbtableview.h"
DBTableView::DBTableView(QWidget *_parent_widget)
: QTableView(_parent_widget)
{
db_table_model_ = new QStandardItemModel();
//view与model绑定
setModel(db_table_model_);
QStringList table_h_headers;
int RowCount=4;
table_h_headers << "设施ID" << "设施名称" << "设施等级" << "人员配置";
//设置HorizontalHeaderLabels
db_table_model_->setHorizontalHeaderLabels(table_h_headers);
QStringList table_v_headers;
int ColumnCount=5;
table_v_headers << "测试1" << "测试2" << "测试3" << "测试4"<< "测试5";
//设置VerticalHeaderLabels
db_table_model_->setVerticalHeaderLabels(table_v_headers);
}
DBTableView::~DBTableView()
{
}
QStringList table_h_headers;
int RowCount=4;
table_h_headers << "设施ID" << "设施名称" << "设施等级" << "人员配置";
//设置HorizontalHeaderLabels
db_table_model_->setHorizontalHeaderLabels(table_h_headers);
QStringList table_v_headers;
int ColumnCount=5;
table_v_headers << "测试1" << "测试2" << "测试3" << "测试4"<< "测试5";
//设置VerticalHeaderLabels
db_table_model_->setVerticalHeaderLabels(table_v_headers);
//设置表格内部item
for(int i=0;i<ColumnCount;i++)
for(int j=0;j<RowCount;j++)
{
db_table_model_->setItem(i,j,new QStandardItem(QString("(第%1列,第%2行)").arg(j+1).arg(i+1)));
}
//获取表格的标题
for(int index=0;index<RowCount;index++)
{
qDebug()<<db_table_model_->headerData(index,Qt::Horizontal,Qt::DisplayRole);
}
//插入一行数据
QList<QStandardItem*> addItems;
for(int index=0;index<RowCount;index++)
{
addItems << new QStandardItem(QString::number(index+1));
}
db_table_model_->appendRow(addItems);
model对象提供了一个clear()函数,可以一次将表格内容和表格标题都删掉。
如果只想清空表格内容:可以使用model的rowCount()配合removeRows()函数完成。