diff options
Diffstat (limited to 'src/sql')
-rw-r--r-- | src/sql/configure.json | 22 | ||||
-rw-r--r-- | src/sql/kernel/qtsqlglobal.h | 1 | ||||
-rw-r--r-- | src/sql/kernel/qtsqlglobal_p.h | 1 | ||||
-rw-r--r-- | src/sql/models/qsqlquerymodel.h | 3 | ||||
-rw-r--r-- | src/sql/models/qsqlquerymodel_p.h | 2 | ||||
-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.h | 2 | ||||
-rw-r--r-- | src/sql/models/qsqltablemodel_p.h | 2 | ||||
-rw-r--r-- | src/sql/sql.pro | 2 |
10 files changed, 59 insertions, 3 deletions
diff --git a/src/sql/configure.json b/src/sql/configure.json new file mode 100644 index 0000000000..8fdc27e3a2 --- /dev/null +++ b/src/sql/configure.json @@ -0,0 +1,22 @@ +{ + "module": "sql", + "depends": [ + "core" + ], + + "features": { + "sqlmodel": { + "label": "SQL item models", + "purpose": "Provides item model classes backed by SQL databases.", + "condition": "features.itemmodel", + "output": [ "publicFeature" ] + } + }, + + "summary": [ + { + "section": "Qt Sql", + "entries": [ "sqlmodel" ] + } + ] +} diff --git a/src/sql/kernel/qtsqlglobal.h b/src/sql/kernel/qtsqlglobal.h index d421adc84b..ec79e8da1e 100644 --- a/src/sql/kernel/qtsqlglobal.h +++ b/src/sql/kernel/qtsqlglobal.h @@ -41,6 +41,7 @@ #define QTSQLGLOBAL_H #include <QtCore/qglobal.h> +#include <QtSql/qtsql-config.h> QT_BEGIN_NAMESPACE diff --git a/src/sql/kernel/qtsqlglobal_p.h b/src/sql/kernel/qtsqlglobal_p.h index ab45f6cd38..78a2461257 100644 --- a/src/sql/kernel/qtsqlglobal_p.h +++ b/src/sql/kernel/qtsqlglobal_p.h @@ -53,5 +53,6 @@ #include <QtSql/qtsqlglobal.h> #include <QtCore/private/qglobal_p.h> +#include <QtSql/private/qtsql-config_p.h> #endif // QTSQLGLOBAL_P_H 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..76aaf00c88 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 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.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..faa1b30803 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 diff --git a/src/sql/sql.pro b/src/sql/sql.pro index 821ae1c9b9..1cd2a05250 100644 --- a/src/sql/sql.pro +++ b/src/sql/sql.pro @@ -11,7 +11,7 @@ PRECOMPILED_HEADER = ../corelib/global/qt_pch.h SQL_P = sql include(kernel/kernel.pri) -include(models/models.pri) +qtConfig(sqlmodel): include(models/models.pri) MODULE_PLUGIN_TYPES = \ sqldrivers |