QTableWidget - делегат со списком, как разрешить разные параметры для каждой ячейки

Алоха

У меня есть QTableWidget с двумя столбцами, которые в настоящее время используют ComboboxDelegate (мой подкласс QItemDelegate) для предоставления пользователю опций. Я хотел бы, чтобы выбор в первом столбце влиял на параметры, доступные во втором, только для текущей строки.

Например, в первом столбце есть список автомобилей, а во втором список цветов, доступных для этого автомобиля. В других рядах выбраны разные автомобили и, следовательно, доступны разные варианты цвета.

Из того, что я вижу, я могу установить делегат элемента только для каждой строки или столбца, поэтому я не вижу, как изменить параметры в делегате второго столбца, не затрагивая все остальные строки.

Это возможно? Мне бы очень хотелось избежать полного разделения представления/модели, поскольку у меня уже есть довольно много кода, просматривающего этот QTableWidget (и я под давлением времени)


person mike    schedule 10.10.2013    source источник


Ответы (1)


Хорошо для тех, кто заинтересован; Я вернулся к моему подходу до делегирования, который заключался в использовании QTableWidget::setItemWidget() для предоставления виджета со списком для каждой ячейки.

Я создал подкласс qcombobox, чтобы получить ссылку на таблицу, и соединил поле со списком CurrentIndexChanged со слотом для обновления данных таблицы. (установка виджета в ячейке не влияет на данные tablewidget, если вы этого не сделаете).

Использование полного выпадающего списка, подобного этому, дороже, чем itemdelegate, но мои таблицы очень маленькие, поэтому мне это сойдет с рук. Рендеринг поля со списком не так хорош, как у делегата (поле со списком видно все время, а не только во время редактирования в случае делегата), но со временем я уверен, что смогу улучшить это.

person mike    schedule 10.10.2013