Qt tableview

qt  tableview是  模型-视图模式即(model-view),其中视图是显示数据和编辑数据的组件,模型是视图和原始数据的接口,类似的常见应用有数据库;

第一步 初始化

在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("良品")<<QString::fromLocal8Bit("总数");
	for (int i = 0; i < 7; i++)
	{
		model->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<QStandardItem*> 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 <model->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 <model->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);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值