如果你使用的是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);
效果图:
喜欢的记得点个赞再走,求求彦祖了,就点个赞吧