
#ifndef TREEITEM_H
#define TREEITEM_H

#include <QVariant>
#include <QVector>


class TreeItem
{
public:
    explicit TreeItem(const QVector<QVariant> &data, TreeItem *parent = nullptr);
    ~TreeItem();

    TreeItem *child(int number);
    int childCount() const;
    int columnCount() const;
    QVariant data(int column) const;
    bool insertChildren(int position, int count, int columns);
    bool insertColumns(int position, int columns);
    TreeItem *parent();
    bool removeChildren(int position, int count);
    bool removeColumns(int position, int columns);
    int childNumber() const;
    bool setData(int column, const QVariant &value);

    void clear();
    void addChildren(TreeItem* item);

    void setFieldPath(const QString& path);
    QString fieldPath();
private:
    QVector<TreeItem*> mChildItems;
    QVector<QVariant> mItemData;
    TreeItem* mParentItem;
    QString mFieldPath;
};


#endif // TREEITEM_H
