@jkrieger

Как модифицировать Combo Widget Mapper для связи по значению, а не по индексу?

Столкнулся с задачей, похожей на описанну в доках по QT:
qt-project.org/doc/qt-4.8/itemviews-combowidgetmap...

У меня тоже есть две не связанные модели. Одна из которых содержит список доступных вариантов и должна привязываться в QComboBox. Отличие от примера в том, что у меня в первой модели хранится не индекс, а само значение (если смотреть на картинку, то для "Carol" не "2", а "Other")
widgetmapper-combo-mapping.png

Подскажите, пожалуйста, как застваить этот пример работать в моём случае.
  • Вопрос задан
  • 2512 просмотров
Пригласить эксперта
Ответы на вопрос 2
В примере для комбобокса используется маппинг свойства currentIntex:
mapper->addMapping(typeComboBox, 2, "currentIndex");

Внимание на третий параметр метода addMapping.
Вам же необходимо связать по тексту. У комбобокса текущий текст задаётся свойством currentText. Поэтому заменяем только имя свойства при привязке:
mapper->addMapping(typeComboBox, 2, "currentText");
Ответ написан
@jkrieger Автор вопроса
Попробовал сделующим образом (у меня PyQT):

if isinstance(pyqt_widget, QtGui.QComboBox):
	self.data.mapper.addMapping(pyqt_widget, attrs.index(attr), 'currentText')

else:
	self.data.mapper.addMapping(pyqt_widget, attrs.index(attr))


Не работает: mapper не устанавливает значения.

На текущий момент я реализовал свой QItemDelegate, в котором переопределил setEditorData и setModelData. И у меня заработали не-Editable QComboBox. С Editable хуже - не получается выбирать значение из списка. Но я подозреваю тут в другом месте проблема.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы