0

我有QTableView使用QSqlTableModeland的对话QSortFilterProxyModel,它们正在从 SQL 数据库中读取。我想更改列 [3 , 4 , 5] 的颜色。我正在使用以下代码:

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

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

4

1 回答 1

0

问题是代理模型和QSqlTableModel后台角色都不会做任何事情。所以你设置了它,但是如果你想检查返回的结果setData,你会注意到它是错误的:你正在做的是一个无操作。

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

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

于 2013-10-05T19:51:02.443 回答