我与QTableView
使用QSqlTableModel
和QSortFilterProxyModel
的对话,他们正在从SQL数据库中读取。我想改变我的列的颜色[3,4,5]。
我使用以下代码:
ui->tableView->model()->setData(
ui->tableView->model()->index(1,2),
QVariant(QBrush(Qt::red)),
Qt::BackgroundRole);
我已经搜索了4天的解决方案,但仍然没有。请告诉我该怎么办。无论是什么,我只需要一些新的源代码,或者其他方式,或者只是编辑我的代码。
答案 0 :(得分:0)
问题是代理模型和QSqlTableModel
都不会对后台角色做任何事情。所以你设置它,但如果你关心检查setData
返回的结果,你会发现它是假的:你正在做的是无操作。
考虑一下:SQL数据库通常无法将属性(如背景颜色)与给定字段中的其他数据一起存储。同样,代理模型只用于对数据进行排序,并且它不会为您提供任何额外的存储空间。
您需要做的是在表模型和排序/过滤器代理之间插入自定义代理。该代理需要为您存储此类扩展属性。然后它会工作。