Solved Extend QSqlTableModel & Update model data;
-
Also columnCount, otherwise your column won't be shown.
AFAIK, you currently have to do that by hand e.g. using a QHash.
-
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 ?
-
If not, is there a simpler solution?
I was thinking of filter and sort functionality. -
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.
-
Sounds like what I'm looking. Can you please describe in more detail what is to be done for or post a link to a describtion?
Best regards
-
You can all setData from your model and change the last parameter to a custom value e.g. Qt::UserRole + 1. Define that value in your class so you can easily re-use it.
-
Sorry, I was looking for an example , but found nothing on the internet. Can you explain to me the usage of it by short example ?
-
An example of
myModel->setData(myCustomValue, Qt::UserRole + 1);
?