表格视图控件QTableView,需要和QStandardItemModel, 配套使用,这套框架是基于MVC设计模式设计的,M(Model)是QStandardItemModel数据模型,不能单独显示出来。V(view)是指QTableView视图,要来显示数据模型,C(controllor)控制在Qt中被弱化,与View合并到一起。
1 QTableView简单应用
QStandardItmeModel表格的数据模型,那么这个模型需要填上每一行每一列的数据,就像execl表格一样。
widget.h
class Widget : public QTableView //继承至QTableView
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
};
// WIDGET_H
widget.cpp
Widget::Widget(QWidget *parent)
: QTableView(parent)
{
QStandardItemModel* model = new QStandardItemModel(this);
model->setItem(0, 0, new QStandardItem("张三"));
model->setItem(0, 1, new QStandardItem("3"));
model->setItem(0, 2, new QStandardItem("男"));
this->setModel(model);
}
Widget::~Widget()
{
}
以上代码实现了在model中添加一条数据,然后通过setModel函数设置view的数据模型为model,显示出来,如图:
2 修改行列字段名
修改字段名可以使用QStandardItemModel::setHeaderData
,但是在这之前你需要调用QStandardItemModel::setColumnCount
和QStandardItemModel::setRowCount
,例如:
Widget::Widget(QWidget *parent)
: QTableView(parent)
{
QStandardItemModel* model = new QStandardItemModel(this);
/*设置列字段名*/
model->setColumnCount(3);
model->setHeaderData(0,Qt::Horizontal, "姓名");
model->setHeaderData(1,Qt::Horizontal, "年龄");
model->setHeaderData(2,Qt::Horizontal, "性别");
/*设置行字段名*/
model->setRowCount(3);
model->setHeaderData(0,Qt::Vertical, "记录一");
model->setHeaderData(1,Qt::Vertical, "记录二");
model->setHeaderData(