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