![]() |
|
![]() ![]() ![]() |
|
DSan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 10.2.2007 Репутация: нет Всего: нет |
Допустим, имеются 2 таблицы в базе данных: someItems и groups.
Первая вида (поля): groupID, itemName. Вторая вида: id, groupName. При помощи QSqlRelationalTableModel база прекрасно выводится в QTableView в виде: groupName itemName Необходимо вывести эту таблицу в виде дерева: - groupName1 ----- itemName1 ----- itemName2 - groupName2 ----- itemName1 В голове возникает мысль унаследовать потомка от QAbstractProxyModel, чтобы сделать представление, которое нужно мне, но, во-первых, не знаю c какой стороны подступиться, а, во-вторых, не покидает ощущение, что хочу прикрутить к мопеду двигатель от камаза. Собственно, нужна подсказка, как по поводу унаследования QAbstractProxyModel, так и по поводу других способов решения задачи. |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
DSan, дык может возьмёшь QTreeWidget/QTreeView, и дело с концом? Либо унаследуешь QAbstractTreeModel, либо просто напишешь процедуру вывода инфы в дерево, ручками (наборами SQL-запросов).
|
|||
|
||||
DSan |
|
||||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 10.2.2007 Репутация: нет Всего: нет |
JackYF, спасибо за ответ.
Если просто так возьму QTreeView и в качестве модели подсуну QRelationalTableModel, то ничего не получится, отобразится в обычном табличном виде.
Была такая мысль, скорее всего так и придется поступить - использовать QStandardItemModel с ручным формированием дерева из результатов запросов. Хоть, как мне кажется, и не самое красивое решение, но под мои нужды подойдет. P.S. Отмечу вопрос как решенный, но хотелось бы все-таки услышать какие-то рекомендации по унаследованию QAbstractProxyModel (можно ссылки на рус/англ ресурсы) для решения этой же задачи: что перегружать, как работать. Информации по этому вопросу не нашел, а интересно. |
||||
|
|||||
nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 13 Всего: 181 |
Model Classes Model Subclassing Reference Creating New Models Simple Tree Model Example и Proxy Models По остальному сабжу, если надо чтобы работало быстро, то надо делать смесь QAbstractTreeModel и QRelationalTableModel, с кэшем и доставанием нужной информации из базы данных сразу в нужном виде- Если не обязательно быстро и/или не хочется возится с базой данных, то надо наследовать QAbstractProxyModel, и создавать индексы с нужными парентами. Т.е. когда вью будет делать запросы на родителя/детей, то надо будет откуда-то достать эту информацию (если она например есть в той же таблице - прекрасно) и вернуть соответствующий индекс. Добавлено @ 03:20 ИМХО ![]() Это сообщение отредактировал(а) nickless - 27.5.2008, 03:22 -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |