crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Использование QAbstactItemModel и QAbstractItemView
Анна
  опции профиля:
сообщение 19.12.2013, 12:46
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 276
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 30 раз(а)




Репутация:   4  


Практически все мои приложения, написанные за последние два года, представляют собой штуку, которая получает из железки структуру со всевозможными данными (настройками железки), отображает эти данные в формах, позволяет редактировать данные и заливать обратно в железку. Иногда появляются всякие усложнения типа обеспечить набор общих данных для группы железок и т. д. В общем, типичное MVC.
Обычно, из кутешных классов использовала QStandardItemModel и соответствующие вьювер для таблицы, когда в данных встречались массивы.
И вдруг на старости лет меня посетила мысля почему бы на использовать QAbstractItemModel для всей структуры данных из железки, а для форм использовать QAbstractItemView.
Наверняка кто-нибудь уже имел дело с подобной реализацией. Может, поделитесь опытом или кинете ссылку на что-нибудь похожее из кутешных проектов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 24.12.2013, 22:59
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(Анна @ 19.12.2013, 15:46) *
Практически все мои приложения, написанные за последние два года, представляют собой штуку, которая получает из железки структуру со всевозможными данными (настройками железки), отображает эти данные в формах, позволяет редактировать данные и заливать обратно в железку.

у меня тоже, но сути вопроса я не смог понять :) Имеется в виду - объединить инфу с нескольких приборов и отобразить её всю скопом (например слить все журналы событий в один) ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Анна
  опции профиля:
сообщение 25.12.2013, 12:57
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 276
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 30 раз(а)




Репутация:   4  


Цитата(Алексей1153 @ 24.12.2013, 23:59) *
Цитата(Анна @ 19.12.2013, 15:46) *
Практически все мои приложения, написанные за последние два года, представляют собой штуку, которая получает из железки структуру со всевозможными данными (настройками железки), отображает эти данные в формах, позволяет редактировать данные и заливать обратно в железку.

у меня тоже, но сути вопроса я не смог понять :) Имеется в виду - объединить инфу с нескольких приборов и отобразить её всю скопом (например слить все журналы событий в один) ?

Вопрос в том, как кто-нибудь применял класс QAbstractItemModel для отображения такой каракатицы, как набор структур , вложенные друг в друга всевозможными способами, и как сделать на QAbstractItemView форму для заполнения и редактирования структур, чтобы она работала так же, как работают поля в таблице - я редактирую поле, переключаю радиокнопки или выставляю флажок, а данные тут же валятся в модель? Ведь по сути структуру любой сложности можно представить как комбинацию деревьев и таблиц. Кто-нибудь это делал?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 28.12.2013, 7:29
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


делать не приходилось, но решение очевидное - дерево, представленное в виде таблиц. Таблица - это ветка. Каждая ячейка может содержать свою таблицу. Каждой ячейке назначается свой делегат через
void QAbstractItemView::setItemDelegate ( QAbstractItemDelegate * delegate )


для редактирования виджет делегата можно попробовать распахивать во всю морду таблицы
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Анна
  опции профиля:
сообщение 30.12.2013, 10:43
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 276
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 30 раз(а)




Репутация:   4  


С делегатом я уже экспериментировала - данные из строки выводятся в делегате-диалоге. Очень удобно.
Но сейчас меня больше интересует применение QAbstractItemView и его возможность сразу же сообщать модели об изменении в текущем элементе.
Например, ситуация, когда часть структуры отображена в QTreeView слева, а содержимое текущего элемента отображено справа в произвольной форме, зависящей от содержимого. Например, как многие хелпы: слева - список статей, справа - текущая статья. Или как в панели управления у винды.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 6.2.2014, 7:37
Сообщение #6


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Анна, элементы view должны извещать один общий "центр", который затем извещает все view о том, что им надо перерисоваться
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 13:18