0

我正在使用 Qt5。现在,我QTableView使用QSqlTableModel. 我添加了一个额外的列model->insertColumn(n);。我希望能够 - 使用鼠标 - 在这个新添加的列的某些单元格中放置一些复选标记,因为 - 退出后tableView- 我需要对标有复选标记的行做一些进一步的处理......有没有办法做到这一点?请帮忙。

坏消息是:我可以添加/更改表格中的所有单元格(使用model->setData(index, "...");),除了新添加列的单元格......
为什么会发生这种情况?

4

1 回答 1

1

您的 QSqlTableModel 正在修改(或尝试)数据库中的相应表,这可能会以某种方式失败。您的额外列是否真的对应于来自数据库的数据,还是合成的?

无论如何,两种可能的解决方案是

  1. 原始 SQL 模型前面的代理模型
  2. 子类化你的 SQL 模型

这个想法是使用代理/子类来扩充数据(通过合成额外列的数据),以及处理检查状态。为了将单元格标记为“可检查”,您需要Qt::ItemIsCheckable从模型的flags()实现中返回,然后视图将调用data()请求Qt::CheckStateRole.

于 2015-06-11T12:52:41.520 回答