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);


    推荐阅读