【发布时间】:2016-05-10 14:20:15
【问题描述】:
我正在使用 Qt Designer(实际上是 Qt Creator,但特别是从 Qt Designer 派生的部分),并且我已将一些 QComboBox 项目添加到具有恒定项目列表的对话框中。我需要将组合框中的项目映射到字符串(与显示的字符串不同)。我想出的最好的主意是使用QComboBox::itemData 函数从选定的项目中获取所需的字符串,但是我无法将关联的字符串添加到项目中。我已经查看了整个设计器,但还没有看到添加用户数据的方法。有没有我想念的?如果需要,我也愿意直接编辑 .ui 文件的 XML 以添加属性,但我不知道属性名称是什么。有没有我可以在这里使用的?目前我正在代码中添加数据,但对我来说这似乎不是正确的解决方案。
【问题讨论】:
-
鉴于项目数据是 QVariant,这似乎不太可能在 Qt Designer 中实现。而且我不认为在代码中填充组合是错误的或不寻常的。
-
我不确定。几乎任何属性都是 QVariant,类型选择决定了 QVariant 中的值类型。这就是它使用动态属性的方式,例如,如果您在设计器中添加一个属性并使用 QObject::property 访问它。至于为什么我不想将它放在代码文件中,将项目实例化和数据实例化分开似乎是一种不好的做法,因为它会使添加/编辑项目更加麻烦。
-
数据必须序列化为xml,这就是为什么我建议不太可能支持它(但原则上并非不可能)。恐怕我不明白为什么您认为在代码中填充组合框是“不好的做法”或很麻烦。
-
我不在代码中填充组合框。组合框的项目正在 .ui 文件中设置。它是在代码中设置的与之关联的数据。因此项目及其文本在 .ui 文件中,数据在单独的源文件中。
-
啊 - 我实际上是在建议您在代码中填充文本 和 数据。我同意单独填充它们不是一个好的解决方案。
标签: qt designer qt-designer qcombobox