Я использую Qt Designer (ну, собственно, Qt Creator, а конкретно часть, полученная из Qt Designer), и я добавил несколько элементов QComboBox в диалог с постоянным списком элементов. Мне нужно сопоставить элементы в поле со списком со строками (которые отличаются от отображаемых строк). Лучшая идея, которую я придумал, это использовать функцию QComboBox :: itemData, чтобы получить нужную строку из выбранного элемента, но мне не удается добавить связанные строки к элементам. Я посмотрел на дизайнера и еще не видел способ добавления пользовательских данных. Есть ли там там, что мне не хватает? Я также хочу напрямую редактировать XML файла .ui, чтобы добавить свойство, если это необходимо, но я не могу понять, каким будет имя свойства. Есть ли там тот, который я могу использовать здесь? В настоящее время я добавляю данные в код, но это не похоже на правильное решение для меня.Как я могу добавить данные элемента в QComboBox из файла Qt Designer/.ui
4
A
ответ
5
Итак, я действительно просмотрел исходный код uic и нашел место, которое обрабатывает QComboBox. Начиная с текущей версии Qt (так 5.5.1), нет никакой поддержки для установки атрибута данных элементов через файлы .ui. Я могу сделать этот запрос функции, но пока он не поддерживается.
1
В конструкторе QT 5.6.2 вы можете дважды щелкнуть поле со списком, чтобы добавить элементы.
Кажется маловероятным, что это будет реализовано в Qt Designer, учитывая, что данные элемента являются QVariant. И я не вижу, что неправильно или необычно заполнять комбо в коде. – ekhumoro
Я не уверен в этом. В значительной степени любое свойство является QVariant, с выбором типа, определяющим тип значения в QVariant. Вот как это работает с динамическими свойствами, например, если вы добавляете свойство в конструктор и получаете доступ к свойству QObject ::. Что касается того, почему я не хочу помещать его в файл кода, кажется, что неправильная практика заключается в том, чтобы отделить экземпляр элемента и экземпляр данных, поскольку он делает добавление/редактирование элементов более громоздкими. – LRFLEW
Данные должны быть сериализованы как xml, поэтому я предполагаю, что это вряд ли будет поддерживаться (но не невозможно в принципе). Боюсь, я не понимаю, почему вы думаете, что заполнение комбинированного кода в коде является «плохой практикой» или громоздкой. – ekhumoro