#ifndef HORIZONTALPROXYMODEL_H #define HORIZONTALPROXYMODEL_H #include class PropertyProxyModel : public QIdentityProxyModel { Q_OBJECT public: PropertyProxyModel(QObject * parent = nullptr); QModelIndex mapToSource(const QModelIndex &proxyIndex) const; QModelIndex mapFromSource(const QModelIndex &sourceIndex) const; QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; QModelIndex parent(const QModelIndex &child) const; int rowCount(const QModelIndex &parent) const; int columnCount(const QModelIndex &parent) const; QVariant headerData(int section, Qt::Orientation orientation, int role) const; QVariant data(const QModelIndex &proxyIndex, int role) const; public Q_SLOTS: /** Updates the model (and view) to show the values for row * * The column part of the index is not used QModelIndex is used to make is eacy to connect to * QItemSelectionModel::currentRowChanged */ void setActiveRow(const QModelIndex &row); private: enum Columns { propertyColumn = 0, valueColumn }; int activeRow = -1; }; #endif // HORIZONTALPROXYMODEL_H