diff options
Diffstat (limited to 'src/sql/models')
-rw-r--r-- | src/sql/models/qsqlquerymodel.cpp | 24 | ||||
-rw-r--r-- | src/sql/models/qsqlquerymodel.h | 24 | ||||
-rw-r--r-- | src/sql/models/qsqlrelationaltablemodel.cpp | 14 | ||||
-rw-r--r-- | src/sql/models/qsqlrelationaltablemodel.h | 24 | ||||
-rw-r--r-- | src/sql/models/qsqltablemodel.cpp | 14 | ||||
-rw-r--r-- | src/sql/models/qsqltablemodel.h | 30 | ||||
-rw-r--r-- | src/sql/models/qsqltablemodel_p.h | 2 |
7 files changed, 84 insertions, 48 deletions
diff --git a/src/sql/models/qsqlquerymodel.cpp b/src/sql/models/qsqlquerymodel.cpp index 864c5b9946..c0b1061c6b 100644 --- a/src/sql/models/qsqlquerymodel.cpp +++ b/src/sql/models/qsqlquerymodel.cpp @@ -212,6 +212,30 @@ bool QSqlQueryModel::canFetchMore(const QModelIndex &parent) const return (!parent.isValid() && !d->atEnd); } +/*! + \since 5.10 + \reimp + + Returns the model's role names. + + Qt defines only one role for the QSqlQueryModel: + + \table + \header + \li Qt Role + \li QML Role Name + \row + \li Qt::DisplayRole + \li display + \endtable +*/ +QHash<int, QByteArray> QSqlQueryModel::roleNames() const +{ + return QHash<int, QByteArray> { + { Qt::DisplayRole, QByteArrayLiteral("display") } + }; +} + /*! \internal */ void QSqlQueryModel::beginInsertRows(const QModelIndex &parent, int first, int last) diff --git a/src/sql/models/qsqlquerymodel.h b/src/sql/models/qsqlquerymodel.h index f786f71300..869a5f030c 100644 --- a/src/sql/models/qsqlquerymodel.h +++ b/src/sql/models/qsqlquerymodel.h @@ -58,22 +58,22 @@ class Q_SQL_EXPORT QSqlQueryModel: public QAbstractTableModel Q_DECLARE_PRIVATE(QSqlQueryModel) public: - explicit QSqlQueryModel(QObject *parent = Q_NULLPTR); + explicit QSqlQueryModel(QObject *parent = nullptr); virtual ~QSqlQueryModel(); - int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; - int columnCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + int columnCount(const QModelIndex &parent = QModelIndex()) const override; QSqlRecord record(int row) const; QSqlRecord record() const; - QVariant data(const QModelIndex &item, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + QVariant data(const QModelIndex &item, int role = Qt::DisplayRole) const override; QVariant headerData(int section, Qt::Orientation orientation, - int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + int role = Qt::DisplayRole) const override; bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, - int role = Qt::EditRole) Q_DECL_OVERRIDE; + int role = Qt::EditRole) override; - bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; - bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; + bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override; + bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override; void setQuery(const QSqlQuery &query); void setQuery(const QString &query, const QSqlDatabase &db = QSqlDatabase()); @@ -83,8 +83,10 @@ public: QSqlError lastError() const; - void fetchMore(const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; - bool canFetchMore(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + void fetchMore(const QModelIndex &parent = QModelIndex()) override; + bool canFetchMore(const QModelIndex &parent = QModelIndex()) const override; + + QHash<int, QByteArray> roleNames() const override; protected: void beginInsertRows(const QModelIndex &parent, int first, int last); @@ -105,7 +107,7 @@ protected: virtual QModelIndex indexInQuery(const QModelIndex &item) const; void setLastError(const QSqlError &error); - QSqlQueryModel(QSqlQueryModelPrivate &dd, QObject *parent = Q_NULLPTR); + QSqlQueryModel(QSqlQueryModelPrivate &dd, QObject *parent = nullptr); }; QT_END_NAMESPACE diff --git a/src/sql/models/qsqlrelationaltablemodel.cpp b/src/sql/models/qsqlrelationaltablemodel.cpp index 9d6daa2634..1f590c4ab2 100644 --- a/src/sql/models/qsqlrelationaltablemodel.cpp +++ b/src/sql/models/qsqlrelationaltablemodel.cpp @@ -100,6 +100,12 @@ typedef QSqlRelationalTableModelSql Sql; */ /*! + \fn void QSqlRelation::swap(QSqlRelation &other) + + Swaps \c this with \a other. + */ + +/*! \fn QString QSqlRelation::tableName() const Returns the name of the table to which a foreign key refers. @@ -156,7 +162,7 @@ class QRelatedTableModel : public QSqlTableModel { public: QRelatedTableModel(QRelation *rel, QObject *parent = 0, QSqlDatabase db = QSqlDatabase()); - bool select() Q_DECL_OVERRIDE; + bool select() override; private: bool firstSelect; QRelation *relation; @@ -268,12 +274,12 @@ public: {} QString fullyQualifiedFieldName(const QString &tableName, const QString &fieldName) const; - int nameToIndex(const QString &name) const Q_DECL_OVERRIDE; + int nameToIndex(const QString &name) const override; mutable QVector<QRelation> relations; QSqlRecord baseRec; // the record without relations void clearChanges(); - void clearCache() Q_DECL_OVERRIDE; - void revertCachedRow(int row) Q_DECL_OVERRIDE; + void clearCache() override; + void revertCachedRow(int row) override; void translateFieldNames(QSqlRecord &values) const; QSqlRelationalTableModel::JoinMode joinMode; diff --git a/src/sql/models/qsqlrelationaltablemodel.h b/src/sql/models/qsqlrelationaltablemodel.h index f8b08b089f..90b7a6481f 100644 --- a/src/sql/models/qsqlrelationaltablemodel.h +++ b/src/sql/models/qsqlrelationaltablemodel.h @@ -88,31 +88,31 @@ public: LeftJoin }; - explicit QSqlRelationalTableModel(QObject *parent = Q_NULLPTR, + explicit QSqlRelationalTableModel(QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase()); virtual ~QSqlRelationalTableModel(); - QVariant data(const QModelIndex &item, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; - bool setData(const QModelIndex &item, const QVariant &value, int role = Qt::EditRole) Q_DECL_OVERRIDE; - bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; + QVariant data(const QModelIndex &item, int role = Qt::DisplayRole) const override; + bool setData(const QModelIndex &item, const QVariant &value, int role = Qt::EditRole) override; + bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override; - void clear() Q_DECL_OVERRIDE; - bool select() Q_DECL_OVERRIDE; + void clear() override; + bool select() override; - void setTable(const QString &tableName) Q_DECL_OVERRIDE; + void setTable(const QString &tableName) override; virtual void setRelation(int column, const QSqlRelation &relation); QSqlRelation relation(int column) const; virtual QSqlTableModel *relationModel(int column) const; void setJoinMode( QSqlRelationalTableModel::JoinMode joinMode ); public Q_SLOTS: - void revertRow(int row) Q_DECL_OVERRIDE; + void revertRow(int row) override; protected: - QString selectStatement() const Q_DECL_OVERRIDE; - bool updateRowInTable(int row, const QSqlRecord &values) Q_DECL_OVERRIDE; - bool insertRowIntoTable(const QSqlRecord &values) Q_DECL_OVERRIDE; - QString orderByClause() const Q_DECL_OVERRIDE; + QString selectStatement() const override; + bool updateRowInTable(int row, const QSqlRecord &values) override; + bool insertRowIntoTable(const QSqlRecord &values) override; + QString orderByClause() const override; private: Q_DECLARE_PRIVATE(QSqlRelationalTableModel) diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp index c0706ac22d..05feb87466 100644 --- a/src/sql/models/qsqltablemodel.cpp +++ b/src/sql/models/qsqltablemodel.cpp @@ -477,9 +477,9 @@ QVariant QSqlTableModel::data(const QModelIndex &index, int role) const if (!index.isValid() || (role != Qt::DisplayRole && role != Qt::EditRole)) return QVariant(); - const QSqlTableModelPrivate::ModifiedRow mrow = d->cache.value(index.row()); - if (mrow.op() != QSqlTableModelPrivate::None) - return mrow.rec().value(index.column()); + const auto it = d->cache.constFind(index.row()); + if (it != d->cache.constEnd() && it->op() != QSqlTableModelPrivate::None) + return it->rec().value(index.column()); return QSqlQueryModel::data(index, role); } @@ -532,7 +532,10 @@ bool QSqlTableModel::isDirty(const QModelIndex &index) const if (!index.isValid()) return false; - const QSqlTableModelPrivate::ModifiedRow row = d->cache.value(index.row()); + const auto it = d->cache.constFind(index.row()); + if (it == d->cache.constEnd()) + return false; + const QSqlTableModelPrivate::ModifiedRow &row = *it; if (row.submitted()) return false; @@ -1231,7 +1234,8 @@ int QSqlTableModel::rowCount(const QModelIndex &parent) const QModelIndex QSqlTableModel::indexInQuery(const QModelIndex &item) const { Q_D(const QSqlTableModel); - if (d->cache.value(item.row()).insert()) + const auto it = d->cache.constFind(item.row()); + if (it != d->cache.constEnd() && it->insert()) return QModelIndex(); const int rowOffset = d->insertCount(item.row()); diff --git a/src/sql/models/qsqltablemodel.h b/src/sql/models/qsqltablemodel.h index 6a62c6993d..77b0517c74 100644 --- a/src/sql/models/qsqltablemodel.h +++ b/src/sql/models/qsqltablemodel.h @@ -60,25 +60,25 @@ class Q_SQL_EXPORT QSqlTableModel: public QSqlQueryModel public: enum EditStrategy {OnFieldChange, OnRowChange, OnManualSubmit}; - explicit QSqlTableModel(QObject *parent = Q_NULLPTR, QSqlDatabase db = QSqlDatabase()); + explicit QSqlTableModel(QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase()); virtual ~QSqlTableModel(); virtual void setTable(const QString &tableName); QString tableName() const; - Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE; + Qt::ItemFlags flags(const QModelIndex &index) const override; QSqlRecord record() const; QSqlRecord record(int row) const; - QVariant data(const QModelIndex &idx, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; - bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) Q_DECL_OVERRIDE; + QVariant data(const QModelIndex &idx, int role = Qt::DisplayRole) const override; + bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override; - QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; bool isDirty() const; bool isDirty(const QModelIndex &index) const; - void clear() Q_DECL_OVERRIDE; + void clear() override; virtual void setEditStrategy(EditStrategy strategy); EditStrategy editStrategy() const; @@ -87,17 +87,17 @@ public: QSqlDatabase database() const; int fieldIndex(const QString &fieldName) const; - void sort(int column, Qt::SortOrder order) Q_DECL_OVERRIDE; + void sort(int column, Qt::SortOrder order) override; virtual void setSort(int column, Qt::SortOrder order); QString filter() const; virtual void setFilter(const QString &filter); - int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + int rowCount(const QModelIndex &parent = QModelIndex()) const override; - bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; - bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; - bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; + bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override; + bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override; + bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) override; bool insertRecord(int row, const QSqlRecord &record); bool setRecord(int row, const QSqlRecord &record); @@ -108,8 +108,8 @@ public Q_SLOTS: virtual bool select(); virtual bool selectRow(int row); - bool submit() Q_DECL_OVERRIDE; - void revert() Q_DECL_OVERRIDE; + bool submit() override; + void revert() override; bool submitAll(); void revertAll(); @@ -122,7 +122,7 @@ Q_SIGNALS: void beforeDelete(int row); protected: - QSqlTableModel(QSqlTableModelPrivate &dd, QObject *parent = Q_NULLPTR, QSqlDatabase db = QSqlDatabase()); + QSqlTableModel(QSqlTableModelPrivate &dd, QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase()); virtual bool updateRowInTable(int row, const QSqlRecord &values); virtual bool insertRowIntoTable(const QSqlRecord &values); @@ -132,7 +132,7 @@ protected: void setPrimaryKey(const QSqlIndex &key); void setQuery(const QSqlQuery &query); - QModelIndex indexInQuery(const QModelIndex &item) const Q_DECL_OVERRIDE; + QModelIndex indexInQuery(const QModelIndex &item) const override; QSqlRecord primaryValues(int row) const; }; diff --git a/src/sql/models/qsqltablemodel_p.h b/src/sql/models/qsqltablemodel_p.h index 3b64cdfa47..490bb48a24 100644 --- a/src/sql/models/qsqltablemodel_p.h +++ b/src/sql/models/qsqltablemodel_p.h @@ -117,7 +117,7 @@ public: m_rec = m_db_values; setGenerated(m_rec, m_op == Delete); } - inline QSqlRecord rec() const { return m_rec; } + inline const QSqlRecord &rec() const { return m_rec; } inline QSqlRecord& recRef() { return m_rec; } inline void setValue(int c, const QVariant &v) { |