I made my own model as a subclass of QSqlRelationalTableModel and reimplemented QSqlQueryModel::record(int row) like this.
mymodel.h
{
Q_OBJECT
public:
};
class mymodel : public QSqlRelationalTableModel
{
Q_OBJECT
public:
virtual QVariant data(const QModelIndex &item, int role = Qt::DisplayRole) const;
virtual QSqlRecord record(int row) const;
};
To copy to clipboard, switch view to plain text mode
mymodel.cpp
.
.
.
{
mod.setTable(tableName());
mod.select();
mod.
setFilter(QString("idxxx = %2").
arg(rec.
value("idxxx").
toInt()));
return mod.record(0);
}
.
.
.
QSqlRecord mymodel::record(int row) const
{
QSqlTableModel mod;
QSqlRecord rec = QSqlQueryModel::record(row);
mod.setTable(tableName());
mod.select();
mod.setFilter(QString("idxxx = %2").arg(rec.value("idxxx").toInt()));
return mod.record(0);
}
To copy to clipboard, switch view to plain text mode
So if I call mymodel::record(int row) i get a QSqlRecord as it is in the database (from QSqlTableModel) without any relation.
I can fetch all entries including foreign keys by using QSqlRecord::value("...").
mannermoe
Bookmarks