如何将项目数据从 Qt Designer/.ui 文件添加到 QComboBox

How can I add item data to QComboBox from Qt Designer/.ui file

我正在使用 Qt Designer(好吧,实际上是 Qt Creator,但特别是派生自 Qt Designer 的部分),并且我已将几个 QComboBox 项添加到一个对话框中,其中包含一个常量项列表.我需要将组合框中的项目映射到字符串(与显示的字符串不同)。我想出的最好的主意是使用 QComboBox::itemData 函数从所选项目中获取所需的字符串,但我无法将关联的字符串添加到项目中。我查看了整个设计器,但还没有看到添加用户数据的方法。那里有我想念的吗?如果需要,我也愿意直接编辑 .ui 文件的 XML 以添加 属性,但我不知道 属性 名称会是什么是。我可以在这里使用吗?目前我正在代码中添加数据,但对我来说这似乎不是正确的解决方案。

好的,所以我实际上浏览了 uic 的源代码并找到了处理 QComboBox 的地方。从 Qt 的当前版本(so 5.5.1)开始,不支持通过 .ui 文件设置项目的数据属性。我可以将此作为功能请求,但目前不受支持。

编辑:因为这个答案似乎获得了比应有的更多赞成票。我会把它留在这里,因为很多人似乎在 google 解决他们的问题时找到了这个答案。下面的答案更适合 OP 的问题。

在 QT designer 5.6.2 中,您可以双击组合框来添加项目。

在运行时添加项目:

ui.ComboBox.addItem('My New Combo Box Item')

使用字典将组合框映射到字符串:

lookup_dictionary[ui.ComboBox.currentText()]

这是在每个 ComboBox 项中存储数据以及文本的方法。

item_text = 'This is my text'
item_data = []
your_comboBox.addItem(item_text, item_data)

检索数据:

item_index = 0
y_data = your_comboBox.itemData(item_index)

它不受支持,不幸的是它不太可能实现。参见:https://bugreports.qt.io/browse/QTBUG-50823

“这超出了 UI 设计工具的范围。”