我正在使用Qt5。现在我有一个使用 QSqlTableModel
填充了数据库表中数据的QTableView
。我添加了一列带有model->insertColumn(n);
.我希望能够 - 使用鼠标 - 在这个新添加的列的某些单元格中放置一些复选标记,因为 - 退出tableView
后 - 我需要对标有复选标记的行进行一些进一步的处理...有没有办法做到这一点?请帮忙。
坏消息是:我可以添加/更改表格中的所有单元格(使用 model->setData(index, "...");
),除了新添加列的单元格......
为什么会这样?
您的 QSqlTableModel 正在修改(或尝试)数据库中的相应表,并且可能以某种方式失败。您的额外列是否真的对应于来自数据库的数据,还是合成的?
无论如何,两种可能的解决方案是
- 原始 SQL 模型前面的代理模型
- 子类化您的 SQL 模型
这个想法是使用代理/子类来扩充数据(通过合成额外列的数据),以及处理检查状态。为了将单元格标记为"可检查",您需要从模型的flags()
实现中返回Qt::ItemIsCheckable
,然后视图将调用data()
请求Qt::CheckStateRole
。