Extend QSqlTableModel & Update model data;
-
Thanks for your help.
I decide to inherit fromQSortFilterProxyModel
, extend it to add additional columns and set thesourceModel
toQSqlTableModel
.class ExtraColumnProxyModel : public QSortFilterProxyModel { Q_OBJECT public: ExtraColumnProxyModel(QObject* parent = 0); Qt::ItemFlags flags(const QModelIndex &index) const; QVariant headerData( int section , Qt::Orientation orientation , int role = Qt::DisplayRole ) const; QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; int columnCount(const QModelIndex &parent = QModelIndex()) const; QModelIndex index( int row , int column , const QModelIndex& parent = QModelIndex() ) const; void appendColumn(QString columnName); QHash<int, QByteArray> roleNames() const; private: QHash<int, QByteArray> m_roles; QVector<QString> headerDataVector = QVector<QString>(); };
-
So it's working like you wanted it ?
-
Yes, the model works correctly. Thanks.
If I want to access the data stored in the extraColumns and I the only thing I get is a identifier-string. I have to create aQHash<QString, QModelIndex>
(update it on model change) to get the correct index and aQMap<QModelIndex, $Data>
to store and access the values. Or is there a cleaner solution? -
Are you moving rows around ?
-
You could put that information at the same index using a custom role but it might be slower to get to the right index when searching for it.
-
An example of
myModel->setData(myCustomValue, Qt::UserRole + 1);
?