【发布时间】:2023-03-30 04:57:01
【问题描述】:
我正在使用QComboBox 从单位表中选择单位(对象的任意属性)。问题是我的数据模型中的对象可以没有单位(表中为 NULL),在这种情况下,QComboBox 显示值发生在列表顶部。无法选择“无”。
您建议添加 NULL 支持什么?我有几个版本:
- 在名为“--”或“N/A”的单位表中插入特殊记录。不完全是 NULL - 会有自己的 id。
- 在
QComboBox中设置项目并手动更新模型。可能但乏味 - 再见单元列表的自动更新。
还有什么可能——继承QComboBox(覆盖什么)?我没有看到任何类似于setEditorData/setModelData 的东西,比如QAbstractItemDelegate 来控制项目。
【问题讨论】:
-
让我们暂时忘记
QComboBox,告诉我您何时从数据库中获取数据,您如何在对象表示中存储NULL? -
从数据库中提取数据并存储在对象集合中(手动而不是使用任何 ORM,但我正在处理它。)然后,
QStandardItemModel被创建并填充要提交以供编辑的数据。我有可编辑对象的列表(称为枚举),用户可以在QTableView中选择行并使用带有组合框的编辑器来编辑枚举。 NULL 显然来自 DB 作为 null QVariant,然后存储为整数 0(我有规则 id -
直到我向某人解释情况后才想到 :) 当然,当在列表中选择项目时,我可以用编辑器做任何我需要的事情,包括添加 NULL 选项。抱歉,我要结束这个问题了。