Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2011, 15:36   #1
vlarry
 
Регистрация: 21.01.2011
Сообщений: 5
По умолчанию модель дерева на основе QAbstractItemModel

Добрый день, форумчане!Помогите пожалуйста реализовать метод setupModelData в модели дерева для заполнения данными из таблицы бд...То что у меня получилось на данный момент:

Код:
void TreeModel::setupModelData(const QString &tableName, TreeItem *parent)
{
    QList<TreeItem*> parents, child;
 
    parents << parent;
 
    QSqlTableModel* modelName = new QSqlTableModel;
 
    modelName->setTable(tableName);
    modelName->select();
 
    QString str, nameFilm;
 
    for(int count = 0; count < modelName->rowCount(); count++)
    {
        str = modelName->record(count).value("name").toString();
        TreeItem* item = new TreeItem(str, parents.last());
        parents.last()->appendChild(item);
    }
}
А как это выглядит на экране в прикрепленном файле...Подскажите, как добавить дочерние узлы к этому дереву...
Изображения
Тип файла: png diskdb.png (12.2 Кб, 61 просмотров)
vlarry вне форума Ответить с цитированием
Старый 21.01.2011, 16:58   #2
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

В документации есть замечательный пример Simple Tree Model Example.
Смотри его в ассистанте или на http://doc.qt.nokia.com/latest/itemv...treemodel.html
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 21.01.2011, 17:05   #3
vlarry
 
Регистрация: 21.01.2011
Сообщений: 5
По умолчанию

я с него и делаю, только там загрузка с текстового документа, а у меня из базы
vlarry вне форума Ответить с цитированием
Старый 21.01.2011, 17:17   #4
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

За это у тебя отвечает метод TreeItem::appendChild(TreeItem *item), им для добавления дочерних итемов и пользуйся.

Можешь посмотреть, что произойдёт, если ты setupModelData вызовешь для одного из элементов, а не для корневого элемента.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 21.01.2011, 17:28   #5
vlarry
 
Регистрация: 21.01.2011
Сообщений: 5
По умолчанию

я этот метод и использую: н-р создаю дочерний элемент
Код:
childItem = new TreeItem(parents);
TreeItem* itemChild = new TreeItem(str, parents);
child->appendChild(itemChild);
но это не помагает
vlarry вне форума Ответить с цитированием
Старый 21.01.2011, 20:10   #6
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Нет же. Ты вообще какую-то хрень написал.
Код:
int id = номер;
TreeItem *parent_item = &parents.at(id);
parent_item->appendChild(new TreeItem(str, parent_item));
Хотя я бы модифицировал конструктор TreeItem, добавив туда:
Код:
parent_item->appendChild(this)
И тогда appendChild тебе вообще не надо будет использовать.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 21.01.2011 в 20:13.
Obey-Kun вне форума Ответить с цитированием
Старый 22.01.2011, 00:15   #7
vlarry
 
Регистрация: 21.01.2011
Сообщений: 5
По умолчанию

спасибо, я уже все сделал и все работает...точно что хрень писал, не знаю че тупил, но реально сильно тупил...
vlarry вне форума Ответить с цитированием
Старый 22.01.2011, 03:33   #8
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Только лучше таки усовершенствуй конструктор TreeItem, как я сказал, ибо так логичней. Можно тогда appendChild приватным сделать.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Языковая модель PalTanya Помощь студентам 2 18.11.2010 16:51
Фреймовая модель Шушелла Помощь студентам 0 15.05.2010 00:20
Модель амебы. Alex Cones Свободное общение 25 14.01.2010 22:20
3D модель в GLScene -=<[Evklidd]>=- Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 04.02.2008 15:32