Название: [Решено] Задать данные для пользовательской роли (Qt::UserRole) Отправлено: sergek от Январь 31, 2022, 14:15 Коллеги,
поясните, пожалуйста, как правильно задавать пользовательскую роль модели? Я использую табличную модель MyModel, наследник QAbstractTableModel, для отображения данных - QTableView. Пользовательская роль мне нужна для использования в делегате, в котором в зависимости от ее значения, создавать разные типы виджетов. Я предполагал, что все это реализуется следующим образом (в представленном коде я опускаю несущественные места): модель: Код
Код делегат: Код
Код задаем пользовательскую роль для 3-ей колонки таблицы, для объекта tableView (QTableView) задаем делегат: Код К сожалению, в CComboDelegate::createEditor данные роли type не определены. Что я не так делаю? Название: Re: Задать данные для пользовательской роли (Qt::UserRole) Отправлено: kambala от Январь 31, 2022, 14:40 рекомендуется использовать роль на 1 выше: Qt::UserRole + 1, Qt::UserRole + 2 и т.д. (ну и обозвать их в каком-нить enum тоже неплохо бы), в остальном вроде все правильно
а ты куда-то сохраняешь данные для пользовательской роли (по коду не видно)? по волшебству они нигде не хранятся, ну и в data() надо возвращать значения для своих ролей. Название: Re: Задать данные для пользовательской роли (Qt::UserRole) Отправлено: sergek от Январь 31, 2022, 15:16 а ты куда-то сохраняешь данные для пользовательской роли (по коду не видно)? по волшебству они нигде не хранятся, ну и в data() надо возвращать значения для своих ролей. Это вот так нужно делать? :-\ Да никуда не сохраняю, соответственно и не возвращаю... Меня сбил с толку этот пример: https://question-it.com/questions/1695492/kak-dobavit-raznye-tipy-delegatov-v-qtreeview (https://question-it.com/questions/1695492/kak-dobavit-raznye-tipy-delegatov-v-qtreeview).Понятно. Тогда, для моей задачи проще в CComboDelegate добавить параметром этот тип и не париться с левыми ролями. Название: Re: Задать данные для пользовательской роли (Qt::UserRole) Отправлено: kambala от Январь 31, 2022, 15:45 там там используется QStandardItemModel, айтемы этой модели как раз хранят данные внутри себя
Название: Re: Задать данные для пользовательской роли (Qt::UserRole) Отправлено: sergek от Январь 31, 2022, 15:57 Понял, спасибо!
|