如何在 table 中添加一列,以便我可以在某些单元格中放置复选标记以进行进一步处理?

How to add a column in a table where I can put checkmarks in some cells for further processing?

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

坏消息是:我可以 add/change table 中的所有单元格(使用 model->setData(index, "..."); ),除了新添加列的单元格...
为什么会这样?

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

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

  1. 你原来的SQL模型前面的一个代理模型
  2. 子类化您的 SQL 模型

想法是使用 proxy/subclass 来扩充数据(通过合成额外列的数据),以及处理已检查的状态。为了标记单元格 "checkable",您需要从模型的 flags() 实现中 return Qt::ItemIsCheckable,然后视图将调用 data() 请求 Qt::CheckStateRole.