你要是觉得 setEnabled、setEditable、setSelectable 这些方法麻烦,可以用 setFlags 方法一次性解决,用 Or 运算组合的 Qt::ItemFlags 枚举来设置。
// 头文件
#ifndef CUST_H
#define CUST_H
#include<qwidget.h>
#include<qstandarditemmodel.h>
#include <qtableview.h>
#include <qcolor.h>
class MyTableView : public QTableView
{
Q_OBJECT
public:
explicit MyTableView(QWidget* parent = nullptr);
~MyTableView();
private:
QStandardItemModel *model;
};
#endif
MyTableView::MyTableView(QWidget *parent)
: QTableView(parent)
{
// 实例化模型类
model = new QStandardItemModel(this);
// 五行三列
// model->setRowCount(5);
// model->setColumnCount(3);
// 设置列标题
model->setHorizontalHeaderLabels({"学号", "姓名", "分数"});
// 好,我们开始准备数据
// 第一行
QStandardItem *cell00 = new QStandardItem(QIcon("a.png"), "2572");
QStandardItem *cell01 = new QStandardItem("小李");
QStandardItem *cell02 = new QStandardItem("58");
// 不合格,让它显示黄色
cell02->setBackground(QColor("yellow"));
cell02->setForeground(QColor("red"));
// 设置到模型中
model->setItem(0, 0, cell00);
model->setItem(0, 1, cell01);
model->setItem(0, 2, cell02);
// 第二行
QStandardItem *cell10 = new QStandardItem(QIcon("a.png"), "2055");
QStandardItem *cell11 = new QStandardItem("小陈");
QStandardItem *cell12 = new QStandardItem("85");
model->setItem(1, 0, cell10);
model->setItem(1, 1, cell11);
model->setItem(1, 2, cell12);
// 第三行
QStandardItem *cell20 = new QStandardItem(QIcon("a.png"), "1069");
QStandardItem *cell21 = new QStandardItem("小杜");
QStandardItem *cell22 = new QStandardItem("70");
model->setItem(2, 0, cell20);
model->setItem(2, 1, cell21);
model->setItem(2, 2, cell22);
// 第四行
QStandardItem *cell30 = new QStandardItem(QIcon("a.png"), "2469");
QStandardItem *cell31 = new QStandardItem("小王");
QStandardItem *cell32 = new QStandardItem("100");
// 满分,给他点奖励
cell32->setBackground(QColor("blue"));
cell32->setForeground(QColor("white"));
model->setItem(3, 0, cell30);
model->setItem(3, 1, cell31);
model->setItem(3, 2, cell32);
// 第五行
QStandardItem *cell40 = new QStandardItem(QIcon("a.png"), "6394");
QStandardItem *cell41 = new QStandardItem("小张");
QStandardItem *cell42 = new QStandardItem("89");
model->setItem(4, 0, cell40);
model->setItem(4, 1, cell41);
model->setItem(4, 2, cell42);
// 设置模型
setModel(model);
}
MyTableView::~MyTableView()
{
}