qt自定义qtablemodel实现改变item的背景色

如果你使用的是qtablewidget就非常简单,只需要

qtablewidget->item(i,j)->setBackground(QBrush(0,0,0));

如果你的qtableview的时候,需要使用自定义模型,也就是继承QAbstractTableModel
则不可以使用这些方法,当然重写model可以提升性能,自然也就少了一些方便的api
如果你只是处理小数据,使用前面2个就可以,没必要重写model
下面自定义qtablemodel看处理方法:
qt的文档里写到,自定义需要重写data方法
在这里插入图片描述
data的最后一个参数,就是告诉model是做什么的:
在这里插入图片描述
可以看到Qt::BackgroundRole就是设置背景色的。
所以在data函数中加入以下代码:

if (role == Qt::BackgroundColorRole)
{	
		return QColor(Qt::red);			
}

这个确实会改变背景色,但是是全部的index都改变了
我只想改变某一项,比如说我有一项有问题,我项让他显示红色。
这个时候只需要加一个判断即可。

if (role == Qt::BackgroundColorRole)
{
	if (index.row() == m_errorRow && index.column() == m_errorCol)
	{
		return QColor(Qt::red);
	}		
}

m_errorRow和m_errorCol需要外部进行传入。

void EP_YearTestResultModel::setErrorRowAndCol(int row, int col)
{
	m_errorRow = row;
	m_errorCol = col;
}

传入值之后就会那一项index就会变成红色。
测试代码:

m_pYearResultModel->setErrorRowAndCol(5, 20);

效果图:
在这里插入图片描述

喜欢的记得点个赞再走,求求彦祖了,就点个赞吧

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加油小杜(接qt定制功能,单模块开发等)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值