#ifndef TABLEMODEL_H #define TABLEMODEL_H #include class ModelItem; using namespace std; class TableModel : public QAbstractTableModel { Q_OBJECT public: enum UserRoles { NameRole = Qt::UserRole + 1, DescriptionRole, InfoRole, AmountRole, FactorRole }; static QHash ROLE_NAMES; explicit TableModel(QObject* parent = nullptr); /// QAbstractItemModel interface Qt::ItemFlags flags(const QModelIndex& index) const override; QHash roleNames() const override; int rowCount(const QModelIndex& parent = QModelIndex()) const override; int columnCount(const QModelIndex& parent = QModelIndex()) const override; QVariant data(const QModelIndex& index, int role) const override; QVariant headerData(int section, Qt::Orientation orientation, int role) const override; bool setData(const QModelIndex& index, const QVariant& value, int role) override; // bool setItemData(const QModelIndex& index, const QMap& roles) override; public slots: // bool insertRows(int position, int rows, const QModelIndex& parentIndex = QModelIndex()) // override; bool removeRows(int firstRow, int nRows, const QModelIndex& parentIndex = QModelIndex()) override; void appendItems(const QByteArray& jsonDoc); void insertItems(int startPosition, const QByteArray& jsonDoc, const QModelIndex& parentIndex); private: /// members QList> m_items; /// functions int getRoleForColumn(const int column) const; }; #endif // TABLEMODEL_H