![]() |
|
|
![]()
|
|
| ppopov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 17.2.2010 Где: Тюмень Репутация: нет Всего: нет |
Доброго времени суток.
Помогите разобраться со следующей проблемой: 1) Создал свой метатип объявил его Q_DECLARE_METATYPE(MyType); 2) Создал свою "деревянную" модель унаследовав от QAbstractItemModel 3) Переопределил в модели метод QVariant data(...) 4) Заполнил модель данными при это среди QVaraint-ов если и мой MyType. 5) Соеденил мою модель с QTreeView. Все данные как (кувариант от инта, от стринга ) отображаются как надо а кувариант от моего типа не отображается. Вопрос: Как сделать так что бы QTreeView отображал QVariant<MyType>? Что пробовал: 1) в MyType создал метод toString().....ну а вдруг 2) покурил доку.......невкурил 3) Получилось вот так
Но такой вариант мне не подходит - так как моих Метатипов достаточно много. |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
||||
|
||||
| ppopov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 17.2.2010 Где: Тюмень Репутация: нет Всего: нет |
Основная проблема в том что мой метатип хранит в себе еще несколько значений, которые должны использоваться в делегате для редактирования. А делегат принимает только индекс который оборачивает QVariant. Упомянутым выше способом получается что в куварианте хранится КуСтринг а не мой метатип.
Добавлено через 4 минуты и 12 секунд Пасиба - пока писал предыдущее сообщение пришла в голову мысля - переопределить своего делегата для отображения значений что бы он мог преобразовать кувариант в мой метатип. Буду пробовать.... |
|||
|
||||
| ppopov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 17.2.2010 Где: Тюмень Репутация: нет Всего: нет |
В делегате перекрыл метод отрисовки.
Подводным камнем оказалось то что QVariant *var = index.internalPointer() - возвращал какой-то не тот QVariant, так как if(var.canConvert<MyType>()) был false. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |