Files
GenericQtClientCore/model/tablemodel.h

44 lines
1.3 KiB
C++

#ifndef TABLEMODEL_H
#define TABLEMODEL_H
#include <QAbstractTableModel>
class ModelItem;
using namespace std;
class TableModel : public QAbstractTableModel {
Q_OBJECT
public:
enum UserRoles { NameRole = Qt::UserRole + 1, DescriptionRole, InfoRole, AmountRole, FactorRole };
static QHash<int, QByteArray> ROLE_NAMES;
explicit TableModel(QObject* parent = nullptr);
/// QAbstractItemModel interface
Qt::ItemFlags flags(const QModelIndex& index) const override;
QHash<int, QByteArray> 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<int, QVariant>& roles) override;
public slots:
void appendItems(const QByteArray& jsonDoc);
void insertItems(int startPosition, const QByteArray& jsonDoc, const QModelIndex& parentIndex);
private:
/// members
QList<shared_ptr<ModelItem>> m_items;
/// functions
int getRoleForColumn(const int column) const;
};
#endif // TABLEMODEL_H