![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
silver47 |
![]()
Сообщение
#1
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
Доброго времени суток. Необходимо отобразить структуру:
Город (название городов) - высшая ступень иерархии Улица (название улицы) - чуть более низшая ступень Объект (объект, расположенный по этому адресу) Это лежит в базе данных в таблицах: cities (название), streets (название), object(название объекта, город, улица, дом). Как лучше сделать? С помошью QTreeWidget эту структуру можно создать вручную перебирая все города и все улицы, вопрос производительности. Можно ли это усуществить с помошью QTreeView. То есть вопрос стоит в том, какую модель использовать ![]() Спамибо. |
|
|
abc |
![]()
Сообщение
#2
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
не заполнял treeview своей моделью, в tableview просто делаешь запрос к базе и всё работает) но я бы всё равно делал через view, ибо с виджетом всё ясно без слов, а тут интересно проделать)
Сообщение отредактировал abc - 9.3.2011, 10:45 |
|
|
silver47 |
![]()
Сообщение
#3
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
не заполнял treeview своей моделью, в tableview просто делаешь запрос к базе и всё работает) но я бы всё равно делал через view, ибо с виджетом всё ясно без слов, а тут интересно проделать) Тут и в TreeView, назначаешь QSqlQueryModel с запросом к БД и все работает.... но как сделать модель свою иерархическую ![]() |
|
|
abc |
![]()
Сообщение
#4
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
да, придётся писать свою модель
qt\examples\itemviews\simpletreemodel в бой! ![]() тут с sql выложен пример: http://www.sql.ru/forum/actualthread.aspx?tid=611751 ну, кто его знает, может рабочий) Сообщение отредактировал abc - 9.3.2011, 12:38 |
|
|
abc |
![]()
Сообщение
#5
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
вот ещё вспомнил, что существует QStandardItemModel, с ней просто жить, правда скила разработки своей неповторимой модели не получишь
|
|
|
PAFOS |
![]()
Сообщение
#6
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
Да уж... я только недавно закончил модель гораздо более сложную )) там иерархия была глубиной до 10 уровней, где каждый из уровней своя таблица из БД.
В процессе разработки очень много камней подводных обходил... вообщем не простое это дело) В целом логика такая - на каждую ступень иерархии, я создавал объект QSqlTableModel (иногда и QSqlRelationalModel). В твоем случае у тебя будет три объекта QSqlTableModel Самое сложное - правильно переопределить методы index(), rowCount(), parent() ибо на них строится вся система) В принципе если дашь структуру БД, тогда я могу опубликовать статью) |
|
|
silver47 |
![]()
Сообщение
#7
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
В принципе если дашь структуру БД, тогда я могу опубликовать статью) Структура БД простая до безобразия, т.к. тренировочная выглядит так: таблица cities: ID int - номер города, обычный автоинкримент NAME nvarchar(20) - название города таблица streets: ID int - номер улицы, автоинкримент NAME nvarchar(30) - название улицы CITYID int - город в котором эта улица есть таблица organizations: ID int - номер организации автоинкримент NAME nvarchar(30) - название организации CITY int = cities.ID STREET int = streets.ID |
|
|
abc |
![]()
Сообщение
#8
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
Сильвер, ты сам-то выпутался?)
|
|
|
silver47 |
![]()
Сообщение
#9
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
Сильвер, ты сам-то выпутался?) гм. Вопрос к тому что непонятно структуру изобразил или как я сам реализовал? Сам пока не реализовывал. Дело встало на книге: Mark Summerfield - Advanced Qt Programming. Там это разжевано, но проблема в том, что тяжело понимать если в программировании далеко не Advanced и в английском языке на той же ступени. Пока ковыряю немного другое. |
|
|
PAFOS |
![]()
Сообщение
#10
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
Набросал тут за часок... пока без коментов, кто захочет, разберется.
в исходниках валяется БД streets.sqlite, ее рядом с ехе положить следует.
Прикрепленные файлы
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 20.2.2025, 3:12 |