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

时间:2016-02-01 23:16:59

标签: qt designer qt-designer qcombobox

我正在使用Qt Designer(实际上是Qt Creator,但特别是从Qt Designer派生的部分),并且我已经在具有常量项目列表的对话框中添加了一些QComboBox项目。我需要将组合框中的项映射到字符串(与显示的字符串不同)。我提出的最好的想法是使用QComboBox :: itemData函数从所选项目中获取所需的字符串,但是我在将相关字符串添加到项目时遇到问题。我已经遍布整个设计师,还没有看到添加用户数据的方法。那里有一个我失踪的人吗?我也愿意直接编辑.ui文件的XML以在需要时添加属性,但我无法弄清楚属性名称是什么。我可以在这里使用吗?目前我在代码中添加数据,但它似乎不是我的正确解决方案。

4 个答案:

答案 0 :(得分:15)

编辑:因为这个答案似乎比它应该得到更多的赞成。我会把它留在这里,因为很多人在谷歌搜索他们的问题时似乎找到了这个答案。以下答案更适合OP的答案。

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

答案 1 :(得分:6)

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

答案 2 :(得分:0)

在运行时添加项目:

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

将组合框映射到带有字典的字符串:

lookup_dictionary[ui.ComboBox.currentText()]

答案 3 :(得分:0)

这是在文本中的每个组合框项目中存储数据的方法。

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

要检索数据:

item_index = 0
y_data = your_comboBox.itemData(item_index)