Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ Как просто создать древовидную структуру с собственным типом?

Автор: sindbad07 18.5.2010, 16:42

Доброго времени суток. У меня определен свой тип (структура), мне надо просто сделать иерархический список с этим типом (дерево), смотрел инфу про контейнеры, там такого не нашел, как по простому можно это сделать?

Автор: kibsoft 18.5.2010, 16:49

Не совсем понял задачу, но может быть делать QList в QList и т.д.?

Автор: sindbad07 18.5.2010, 16:56

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

и т.д.


Автор: Litkevich Yuriy 19.5.2010, 0:35

Прийдётся сделать свой класс примерно такого толка:

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);

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)