LRFLEW
LRFLEW

Reputation: 1291

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

I'm using Qt Designer (well, Qt Creator actually, but specifically the part derived from Qt Designer), and I've added a few QComboBox items to a dialog with a constant list of items. I need to map the items in the combo box to strings (which are distinct from the displayed strings). The best idea I've come up for it is to use the QComboBox::itemData function to get the needed string from the selected item, but I'm having trouble adding the associated strings to the items. I've looked all over the designer and have not yet seen a way to add the user data. Is there one there that I'm missing? I'm also willing to directly edit the XML of the .ui file to add the property if needed, but I can't figure out what the property name would be. Is there one that I can use here? Currently I'm adding the data in code, but it doesn't seem like the correct solution to me.

Upvotes: 17

Views: 26791

Answers (5)

user2401544
user2401544

Reputation: 23

It is not supported and unfortunately it is very unlikely that it will be ever implemented. See: https://bugreports.qt.io/browse/QTBUG-50823

"This out of scope for a UI design tool."

Upvotes: 1

Matheus Torquato
Matheus Torquato

Reputation: 1629

This is how to store data, in addition to the text, in each ComboBox Item.

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

To retrieve the data:

item_index = 0
y_data = your_comboBox.itemData(item_index)

Upvotes: 3

Dschoni
Dschoni

Reputation: 3862

Edit: Because this answer seems to be getting more upvotes than it should. I'll leave it here, because a lot of people seem to find this answer when they google for their problem. The answer below is much better suited to OP's question.

In QT designer 5.6.2 you can double-click the combo-box to add items.

Upvotes: 37

Jesse Reza Khorasanee
Jesse Reza Khorasanee

Reputation: 3471

Add items during runtime:

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

Map Combo Box to strings with a dictionary:

lookup_dictionary[ui.ComboBox.currentText()]

Upvotes: -1

LRFLEW
LRFLEW

Reputation: 1291

Ok, so I actually went through the source code of the uic and found the spot that handles QComboBox. As of the current version of Qt (so 5.5.1), there is no support for setting the data attribute of the items through the .ui files. I may make this a feature request, but for now, it's unsupported.

Upvotes: 16

Related Questions