Qt|Qt tableview
qttableview是模型-视图模式即(model-view),其中视图是显示数据和编辑数据的组件,模型是视图和原始数据的接口,类似的常见应用有数据库;
第一步 初始化 【Qt|Qt tableview】在UI界面上添加一个tableview以后,先创建一个对应的model。确定表格大小并链接UI;
model = new QStandardItemModel(2, 7, this);
//也可以先定义,后设定大小;
// model = new QStandardItemModel();
//model->setRowCount(2);
//model->setColumnCount(7);
//重要
ui.tableView->setModel(model);
添加列号
header << "CCD" << QString::fromLocal8Bit("检测项") << QString::fromLocal8Bit("下限") << QString::fromLocal8Bit("上限")
<< QString::fromLocal8Bit("测量") << "OK-NG" << QString::fromLocal8Bit("良率")<< QString::fromLocal8Bit("良品")<setHeaderData(i, Qt::Horizontal, header[i]);
}
添加列的宽度
for (int i = 0;
i < 7;
i++)
{
ui.tableView->setColumnWidth(i, 50);
}
第二步 添加数据
//方法1
for (int i = 0;
i < 7;
i++)
{model->setItem(0, i, new QStandardItem("2009441676"));
//设置字符颜色
model->item(0, i)->setForeground(QBrush(QColor(255, 0, 0)));
// 设置单元格背景颜色
//model->item(i, j)->setBackground(QBrush(QColor(255, 235, 255)));
//可以用来添加控件
}
//方法2
QList itemlist;
QStandardItem *item;
item = new QStandardItem(CurrentCCD);
itemlist << item;
item = new QStandardItem("111");
itemlist << item;
model->insertRow(0,itemlist);
QStandardItem *qsitem = new QStandardItem("2009441676");
qsitem->setCheckState(Qt::CheckState::Checked);
model->setItem(0, 0, qsitem);
//方法3
QModelIndex ind = model->index(0,2);
model->setData(ind, "qq");
qDebug() << model->data(ind).toString()<<"QModelIndex";
3 设置编辑模式
for (int i = 0;
i rowCount();
i++)
{
//将2,3列的单元格禁止
QStandardItem * item = model->item(i, 2);
item->setFlags(Qt::NoItemFlags);
item = model->item(i, 3);
item->setFlags(Qt::NoItemFlags);
}for (int i = 0;
i rowCount();
i++)
{
//恢复到原来的状态 flag的值为47
Qt::ItemFlags tt = model->item(0, 0)->flags();
QStandardItem * item = model->item(i, 2);
item->setFlags(tt);
item = model->item(i, 3);
item->setFlags(tt);
}
4 隔行变色
model->setAlternatingRowColors(true);
推荐阅读
- 热闹中的孤独
- 我要做大厨
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 爱就是希望你好好活着
- 太平之莲
- 知识
- 叙述作文
- 时间老了
- 清明,是追思、是传承、是感恩。
- 我错了,余生不再打扰