【QT笔记】QTableView设置某一列不可编辑

网上找了很多方法,还得重写model事件太麻烦了。
这边提供两种方法。
方法1:在表格添加时设置item属性editable为false即可。

	QStandardItemModel *m_model = new QStandardItemModel(this);
	m_model->setColumnCount(7);
	ui.tableView->setModel(m_model);//设置model
	ui.tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); //先自适应宽度
	for (int i = 0; i < 7; i++)
	{
		QList<QStandardItem*> valList;
		QStandardItem *numcount = new QStandardItem(QString("%1").arg(i + 1));//序号
		numcount->setEditable(false);//不可编辑
		valList << numcount;
		for (int j = 0; j < 6; j++)
		{
			QStandardItem* item = new QStandardItem("");
			//在这可以设置想要不可编辑列 我这里用3
			if(j==3)
				item->setEditable(false);//不可编辑
			valList << item;//空item
		}
		m_model->insertRow(i, valList);
	}

方法二:
遍历表格,判断想要的不可编辑的列设置每个item不可编辑即可。

	QStandardItemModel *m_model = new QStandardItemModel(this);
	m_model->setColumnCount(7);
	ui.tableView->setModel(m_model);//设置model
	ui.tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); //先自适应宽度
int rowCount = m_model->rowCount();//行数
	int columnCount = m_model->columnCount();//列数
	//这边列需要大于你所需要不可编辑的列 这里使用的是第二列
	if (rowCount < 0 || columnCount < 2)
		return;
	//遍历行
	for (int i = 0; i < rowCount;i++)
	{
		auto item = m_model->item(i, 2);
		item->setEditable(false);
	}
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值