crossplatform.ru

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

> Модель-представление, как создавать свои модели., Модель-представление OTL и вывод информации
vinnipux
  опции профиля:
сообщение 10.7.2008, 8:07
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 10.7.2008
Пользователь №: 230

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




Репутация:   0  


Доброе время суток.
Встала задача разработать приложение работающие с БД. Операционная система Windows ХР среда разработки Eclipse Europe + Qt4 (open_sourse) + MinGW.
Для соединения с БД была выбрана библиотека OTL(OCCI и OCI так и не смог осилить), пришлось попарится, но вроде разобрался как работать с ней. И теперь встал вопрос как выводить данные получаемы от БД. В Qt4 реализована концепция модель-представление, как я понял модель отвечает за доступ к данным через стандартный интерфейс, представление отображает данные. И вот вопрос как написать модель? Ясно что необходимо использовать класс QAbstractItemModel. Необходимо будет перегрузить функции data(),rowCount(), columnCount(). Но мне не ясно как быть с indexModel. как они будут создаваться и описывается. ведь источником данных для модели будет otl_stream что представляет из себя как я понимаю однонаправленный курсор, перемещение по которому возможно только в одном направлении. Честно сказать не совсем понятен процесс взаимодействия модели и представления. То есть представление отображает все данные которые есть в модели (допустим селект вернул 500 тысяч строк), или только часть которую видно на дисплее, а остальные данные подгружает по мере необходимости (перемещения по представлению вниз). Далее для каждого столбца в модели данных создается index, так как otl_stream однонаправлен, где будут хранится данные уже выбранных данных? Или необходимо создавать в модели структуру в которую загружать результат выборки, и уже из этой структуры передавать данные представлению. Или просто искользовать QTableWidget.
Может, кто сталкивался с проблемой вывода данных на экран, и может поделиться опытом, примерами, дать совет, или разъяснить, что я не так понимаю, буду очень благодарен.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Red Devil
  опции профиля:
сообщение 10.7.2008, 12:15
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 68
Регистрация: 6.6.2008
Из: Saint-Petersburg
Пользователь №: 194

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




Репутация:   3  


Цитата
Вы правы структуру действительно придется создавать. но мне доконца не ясен вопрос, как связать структуру с indexModel. Мне видится так решение проблемы. Парасить запрос, и на основании разбора делать вывод сколько полей он вернет, если в селекте стоит * то сделать запрос к БД, и узнать сколько полей имеется у таблицы. Далее на основании количества полей строить класс-контейнер, и создавать массив из таких класов, куда заносить результат запроса. row-номер строки (индекс массива), column - поле в ячейке, элемент класса-контейнера. Вопрос в том может как-то проще можно написать? и как связать с индексами модели.

Вот именно поэтому и прочитай про это в книгах. Там это описано подробно, как и что перезагружать, от чего наследоватся и как связывать модель и представление. Просто все это в посте описать трудно, да и зачем, когда все это в книгах лучше описано.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 22.12.2024, 20:09