Доброго времени суток. Необходимо отобразить структуру:
Город (название городов) - высшая ступень иерархии
Улица (название улицы) - чуть более низшая ступень
Объект (объект, расположенный по этому адресу)
Это лежит в базе данных в таблицах: cities (название), streets (название), object(название объекта, город, улица, дом). Как лучше сделать? С помошью QTreeWidget эту структуру можно создать вручную перебирая все города и все улицы, вопрос производительности. Можно ли это усуществить с помошью QTreeView. То есть вопрос стоит в том, какую модель использовать
Спамибо.
не заполнял treeview своей моделью, в tableview просто делаешь запрос к базе и всё работает) но я бы всё равно делал через view, ибо с виджетом всё ясно без слов, а тут интересно проделать)
да, придётся писать свою модель
qt\examples\itemviews\simpletreemodel
в бой!
тут с sql выложен пример:
http://www.sql.ru/forum/actualthread.aspx?tid=611751
ну, кто его знает, может рабочий)
вот ещё вспомнил, что существует QStandardItemModel, с ней просто жить, правда скила разработки своей неповторимой модели не получишь
Да уж... я только недавно закончил модель гораздо более сложную )) там иерархия была глубиной до 10 уровней, где каждый из уровней своя таблица из БД.
В процессе разработки очень много камней подводных обходил... вообщем не простое это дело)
В целом логика такая - на каждую ступень иерархии, я создавал объект QSqlTableModel (иногда и QSqlRelationalModel).
В твоем случае у тебя будет три объекта QSqlTableModel
Самое сложное - правильно переопределить методы index(), rowCount(), parent() ибо на них строится вся система)
В принципе если дашь структуру БД, тогда я могу опубликовать статью)
Сильвер, ты сам-то выпутался?)
Набросал тут за часок... пока без коментов, кто захочет, разберется.
в исходниках валяется БД streets.sqlite, ее рядом с ехе положить следует.
throw "WTF?";
улыбнуло, но кто его ловит то?Никто не ловит) это так.)
можно пошаманить с QApplication::notify(), для перехвата uncautch exceptions
Кстати есть замечание по поводу БД
у тебя в таблице organizations поле cityid лишнее.
Достаточно лишь streetid, а по streetid можно найти cityid
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)