diff options
Diffstat (limited to 'src/sql/models')
-rw-r--r-- | src/sql/models/qsqlquerymodel.h | 3 | ||||
-rw-r--r-- | src/sql/models/qsqlquerymodel_p.h | 4 | ||||
-rw-r--r-- | src/sql/models/qsqlrelationaldelegate.h | 25 | ||||
-rw-r--r-- | src/sql/models/qsqlrelationaltablemodel.h | 2 | ||||
-rw-r--r-- | src/sql/models/qsqltablemodel.cpp | 4 | ||||
-rw-r--r-- | src/sql/models/qsqltablemodel.h | 2 | ||||
-rw-r--r-- | src/sql/models/qsqltablemodel_p.h | 4 |
7 files changed, 40 insertions, 4 deletions
diff --git a/src/sql/models/qsqlquerymodel.h b/src/sql/models/qsqlquerymodel.h index 869a5f030c..427b369ae2 100644 --- a/src/sql/models/qsqlquerymodel.h +++ b/src/sql/models/qsqlquerymodel.h @@ -44,8 +44,9 @@ #include <QtCore/qabstractitemmodel.h> #include <QtSql/qsqldatabase.h> -QT_BEGIN_NAMESPACE +QT_REQUIRE_CONFIG(sqlmodel); +QT_BEGIN_NAMESPACE class QSqlQueryModelPrivate; class QSqlError; diff --git a/src/sql/models/qsqlquerymodel_p.h b/src/sql/models/qsqlquerymodel_p.h index ffc34b9f95..d5ca2f89cb 100644 --- a/src/sql/models/qsqlquerymodel_p.h +++ b/src/sql/models/qsqlquerymodel_p.h @@ -60,6 +60,8 @@ #include "QtCore/qvarlengtharray.h" #include "QtCore/qvector.h" +QT_REQUIRE_CONFIG(sqlmodel); + QT_BEGIN_NAMESPACE class QSqlQueryModelPrivate: public QAbstractItemModelPrivate @@ -73,7 +75,7 @@ public: void initColOffsets(int size); int columnInQuery(int modelColumn) const; - mutable QSqlQuery query; + mutable QSqlQuery query = { QSqlQuery(0) }; mutable QSqlError error; QModelIndex bottom; QSqlRecord rec; diff --git a/src/sql/models/qsqlrelationaldelegate.h b/src/sql/models/qsqlrelationaldelegate.h index 53f43a4acb..e8ae5a229d 100644 --- a/src/sql/models/qsqlrelationaldelegate.h +++ b/src/sql/models/qsqlrelationaldelegate.h @@ -42,6 +42,8 @@ #include <QtSql/qtsqlglobal.h> +QT_REQUIRE_CONFIG(sqlmodel); + #ifdef QT_WIDGETS_LIB #include <QtWidgets/qitemdelegate.h> @@ -53,7 +55,7 @@ #endif #include <QtSql/qsqldriver.h> #include <QtSql/qsqlrelationaltablemodel.h> - +#include <QtCore/qmetaobject.h> QT_BEGIN_NAMESPACE @@ -97,6 +99,27 @@ QWidget *createEditor(QWidget *aParent, return combo; } + void setEditorData(QWidget *editor, const QModelIndex &index) const override + { + if (!index.isValid()) + return; + + if (qobject_cast<QComboBox *>(editor)) { + // Taken from QItemDelegate::setEditorData() as we need + // to present the DisplayRole and not the EditRole which + // is the id reference to the related model + QVariant v = index.data(Qt::DisplayRole); + QByteArray n = editor->metaObject()->userProperty().name(); + if (!n.isEmpty()) { + if (!v.isValid()) + v = QVariant(editor->property(n).userType(), nullptr); + editor->setProperty(n, v); + return; + } + } + QItemDelegate::setEditorData(editor, index); + } + void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override { if (!index.isValid()) diff --git a/src/sql/models/qsqlrelationaltablemodel.h b/src/sql/models/qsqlrelationaltablemodel.h index 90b7a6481f..555755009c 100644 --- a/src/sql/models/qsqlrelationaltablemodel.h +++ b/src/sql/models/qsqlrelationaltablemodel.h @@ -45,6 +45,8 @@ #include <QtCore/qtypeinfo.h> +QT_REQUIRE_CONFIG(sqlmodel); + QT_BEGIN_NAMESPACE diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp index 865f76c73a..a33f76838f 100644 --- a/src/sql/models/qsqltablemodel.cpp +++ b/src/sql/models/qsqltablemodel.cpp @@ -565,6 +565,10 @@ bool QSqlTableModel::isDirty(const QModelIndex &index) const Returns \c true if the value could be set or false on error, for example if \a index is out of bounds. + Returns \c false if the role is not Qt::EditRole. To set data + for roles other than EditRole, either use a custom proxy model + or subclass QSqlTableModel. + \sa editStrategy(), data(), submit(), submitAll(), revertRow() */ bool QSqlTableModel::setData(const QModelIndex &index, const QVariant &value, int role) diff --git a/src/sql/models/qsqltablemodel.h b/src/sql/models/qsqltablemodel.h index 77b0517c74..7acc7dc94d 100644 --- a/src/sql/models/qsqltablemodel.h +++ b/src/sql/models/qsqltablemodel.h @@ -44,6 +44,8 @@ #include <QtSql/qsqldatabase.h> #include <QtSql/qsqlquerymodel.h> +QT_REQUIRE_CONFIG(sqlmodel); + QT_BEGIN_NAMESPACE diff --git a/src/sql/models/qsqltablemodel_p.h b/src/sql/models/qsqltablemodel_p.h index 490bb48a24..bb568ab444 100644 --- a/src/sql/models/qsqltablemodel_p.h +++ b/src/sql/models/qsqltablemodel_p.h @@ -56,6 +56,8 @@ #include "QtSql/qsqlindex.h" #include "QtCore/qmap.h" +QT_REQUIRE_CONFIG(sqlmodel); + QT_BEGIN_NAMESPACE class Q_AUTOTEST_EXPORT QSqlTableModelPrivate: public QSqlQueryModelPrivate @@ -91,7 +93,7 @@ public: QSqlTableModel::EditStrategy strategy; bool busyInsertingRows; - QSqlQuery editQuery; + QSqlQuery editQuery = { QSqlQuery(0) }; QSqlIndex primaryIndex; QString tableName; QString filter; |