Russian Qt Forum
Ноябрь 23, 2024, 18:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вывод коллекции объектов в QTreeWidget.  (Прочитано 2485 раз)
DiamondRain
Гость
« : Ноябрь 26, 2010, 15:55 »

Доброго времени суток! Делаю вывод коллекции объектов в QTreeWidget (в виде дерева элементов, впоследствии это будет И-ИЛИ-дерево). Никак не получается сделать то, что я хочу. Сделал проще - вот так:
Код:
QTreeWidgetItem *a1 = new QTreeWidgetItem();
    a1->setText(0, "One");

    QTreeWidgetItem *a2 = new QTreeWidgetItem(a1);
    a2->setText(0, "One_1");

    QTreeWidgetItem *a3 = new QTreeWidgetItem(a2);
    a3->setText(0, "One_2");

    ui->treeWidget->insertTopLevelItem(0, a1);
    ui->treeWidget->insertTopLevelItem(0, a2);
    ui->treeWidget->insertTopLevelItem(0, a3);

Здесь получается так, как я хочу. А теперь мой код:

Код:
void MainWindow::on_buildTreeButton_clicked()
{
    QList<TreeItem *> *treeItems = new QList<TreeItem *>;
    //   QList<QTreeWidgetItem *> *visualItems = new QList<QTreeWidgetItem *>;

    TreeItem *mainItem = new TreeItem();
    mainItem->setTitle("itm0");
    mainItem->setLevel(0);

    TreeItem *first = new TreeItem();
    first->setTitle("itm0_1");
    first->setParent(mainItem);
    first->setLevel(1);
    treeItems->append(first);

    TreeItem *second = new TreeItem();
    second->setTitle("itm0_2");
    second->setParent(mainItem);
    second->setLevel(1);
    treeItems->append(second);

    TreeItem *third = new TreeItem();
    third->setTitle("itm1_1");
    third->setParent(first);
    third->setLevel(2);
    treeItems->append(third);

    QTreeWidgetItem *mainVisItem = new QTreeWidgetItem(ui->treeWidget); // вывод главного элемента
    mainVisItem->setText(0, mainItem->title());

    qDebug() << treeItems->size();

    TreeItem *elem;
    foreach (elem, *treeItems) {
        QTreeWidgetItem *visualItemParent = new QTreeWidgetItem();
        visualItemParent->setText(0, elem->parent()->title());
        QTreeWidgetItem *visualItem = new QTreeWidgetItem(visualItemParent);
        qDebug() << elem->title();
        visualItem->setText(0, elem->title());
        ui->treeWidget->insertTopLevelItem(0, visualItem);
    }
}

Код класса TreeItem:

Код:
#ifndef TREEITEM_H
#define TREEITEM_H
#include <QString>

class TreeItem
{
public:
    TreeItem();
    void setTitle(QString title);
    void setParent(TreeItem *parent);
    void setLevel(int level);
    QString title() const;
    TreeItem *parent() const;
    int level() const;

private:
    QString m_title;
    TreeItem *m_parent;
    int m_level;

};

#endif // TREEITEM_H

Код:
#include "treeitem.h"

TreeItem::TreeItem()
{
}

void TreeItem::setTitle(QString title)
{
    m_title = title;
}

void TreeItem::setParent(TreeItem *parent)
{
    m_parent = parent;
}

QString TreeItem::title() const
{
    return m_title;
}

TreeItem* TreeItem::parent() const
{
    return m_parent;
}

int TreeItem::level() const
{
    return m_level;
}

void TreeItem::setLevel(int level)
{
    m_level = level;
}

Подскажите, где я напорол.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.043 секунд. Запросов: 20.