Qt TableView列和单元格颜色

时间:2013-10-05 15:48:07

标签: qt colors tableview

我与QTableView使用QSqlTableModelQSortFilterProxyModel的对话,他们正在从SQL数据库中读取。我想改变我的列的颜色[3,4,5]。 我使用以下代码:

ui->tableView->model()->setData(
    ui->tableView->model()->index(1,2), 
    QVariant(QBrush(Qt::red)),
    Qt::BackgroundRole);

我已经搜索了4天的解决方案,但仍然没有。请告诉我该怎么办。无论是什么,我只需要一些新的源代码,或者其他方式,或者只是编辑我的代码。

1 个答案:

答案 0 :(得分:0)

问题是代理模型和QSqlTableModel都不会对后台角色做任何事情。所以你设置它,但如果你关心检查setData返回的结果,你会发现它是假的:你正在做的是无操作。

考虑一下:SQL数据库通常无法将属性(如背景颜色)与给定字段中的其他数据一起存储。同样,代理模型只用于对数据进行排序,并且它不会为您提供任何额外的存储空间。

您需要做的是在表模型和排序/过滤器代理之间插入自定义代理。该代理需要为您存储此类扩展属性。然后它会工作。