2013-10-05 97 views
0

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

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

我4天搜索解决方案已经和仍然一无所获。请告诉我应该怎么做。无论如何,我只需要一些新的源代码或其他方式,或者只是编辑我的代码片段。

回答

0

问题是,代理模式和QSqlTableModel都不会对背景角色做任何事情。所以你设置它,但如果你关心检查setData返回的结果,你会发现它是错误的:你正在做的是一个没有操作。

想一想:SQL数据库一般无法将背景颜色等属性与其他数据一起存储在给定字段中。同样,代理模型仅用于对数据进行排序,而不会为您提供任何额外的存储空间。

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