Связывание структуры данных с узлами дерева qt - PullRequest
0 голосов
/ 10 апреля 2019

Я пишу приложение QT GUI Opengl, в котором я буду пересекать древовидную структуру и визуализировать объекты.

Вот фиктивная структура для моего класса, которая будет содержать данные для примитивов, которые нужно нарисовать.

Всякий раз, когда пользователь нажимает кнопку для создания фигуры, я добавляю новую запись в древовидном представлении и хочу связать ее с объектом, который будет содержать данные для рисования примитива.

class Container
{
   private:
     Geometry geom;
     unsigned int texture;
     float x;
     float  y;
     float z;
   public :
    // constructor here

    float getx();
    float gety();
    float getz();
 }

Всякий раз, когда пользователь создает новый объект, новая запись должна быть добавлена ​​в древовидное представление и связана с объектом-контейнером.

Когда я пересекаю древовидное представление, каждый узел должен возвращать объект-контейнер, прикрепленный к нему.

Извиняюсь за то, что не опубликовал какой-либо код, поскольку я не знаю, как поступить.

Я ищу какой-нибудь совет или отправную точку для дальнейших действий.

1 Ответ

1 голос
/ 10 апреля 2019

Я предлагаю вам начать с простого примера модели дерева , Вы можете использовать его в качестве справочного материала для вашего решения.

В классе TreeItem: используйте Container как data

Пример:

class TreeItem
{
public:
    explicit TreeItem(const QList<Container> &data, TreeItem *parentItem = 0);
    ~TreeItem();

    void appendChild(TreeItem *child);

    TreeItem *child(int row);
    int childCount() const;
    int columnCount() const;
    Container data(int column) const;
    int row() const;
    TreeItem *parentItem();

private:
    QList<TreeItem*> m_childItems;
    QList<Container> m_itemData; // The tree item holds the container as the data set.
    TreeItem *m_parentItem;
};

Вы можете взять его отсюда, просто используйте пример с вашей пользовательской моделью данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...