crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Как просто создать древовидную структуру с собственным типом?
sindbad07
  опции профиля:
сообщение 18.5.2010, 16:42
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 28.4.2010
Пользователь №: 1671

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




Репутация:   0  


Доброго времени суток. У меня определен свой тип (структура), мне надо просто сделать иерархический список с этим типом (дерево), смотрел инфу про контейнеры, там такого не нашел, как по простому можно это сделать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 18.5.2010, 16:49
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

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




Репутация:   2  


Не совсем понял задачу, но может быть делать QList в QList и т.д.?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
sindbad07
  опции профиля:
сообщение 18.5.2010, 16:56
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 28.4.2010
Пользователь №: 1671

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




Репутация:   0  


Цитата(kibsoft @ 18.5.2010, 17:49) *
Не совсем понял задачу, но может быть делать QList в QList и т.д.?
Может и так, просто надо хранить данные таким макаром:
- элемент 1
     - элемент 2
     - элемент 3
           - элемент 4
     - элемент 5

и т.д.

Причина редактирования: используй тэг code, чтобы сохранять форматирование, как есть
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.5.2010, 0:35
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Прийдётся сделать свой класс примерно такого толка:
class TreeItem
{
public:
    TreeItem(const TreeItem *aparent = 0)
    {
        parent = aparent;
    }
  ~Tree()
    {
        qDeleteAll(children);
    }
  
    append(TreeItem *tree)
    {
        children.append(tree);
        tree->parent = this;
    }

    QVector<TreeItem *> children() const;
    TreeItem *parent() const;

private:
    QVector<TreeItem *> children;
    TreeItem *parent;
};

Использовать так:
TreeItem *parentItem = new TreeItem();
// Variant 1
TreeItem *child1 = new TreeItem();
parentItem->append(child1);
// Variant 2
TreeItem *child2 = new TreeItem(parentItem);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 7.7.2020, 22:03