diff options
| author | Andy Nichols <andy.nichols@qt.io> | 2024-08-28 09:25:52 +0200 |
|---|---|---|
| committer | Andy Nichols <nezticle@gmail.com> | 2024-09-03 10:47:21 +0200 |
| commit | 9792bbcf9d6f729591fe5dcda5f32191faa83251 (patch) | |
| tree | f0736ff72d148d748127831e5da1a62028295b79 /src/quickwidgets/qquickwidget.cpp | |
| parent | 63decca8b5221fdc4f4761272a147ecb3b4479bc (diff) | |
QQuickWidget: Add setInitialProperties API for pairity with QQuickView
Change-Id: Ie04ff09a950bb98d35d4c2d19e5a205d4a08437a
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Diffstat (limited to 'src/quickwidgets/qquickwidget.cpp')
| -rw-r--r-- | src/quickwidgets/qquickwidget.cpp | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp index 147d0a0398..d3f7e52bb6 100644 --- a/src/quickwidgets/qquickwidget.cpp +++ b/src/quickwidgets/qquickwidget.cpp @@ -734,6 +734,22 @@ void QQuickWidget::setContent(const QUrl& url, QQmlComponent *component, QObject d->setRootObject(item); emit statusChanged(status()); } +/*! + Sets the initial properties \a initialProperties with which the QML + component gets initialized after calling \l QQuickWidget::setSource(). + + \note You can only use this function to initialize top-level properties. + \note This function should always be called before setSource, as it has + no effect once the component has become \c Ready. + + \sa QQmlComponent::createWithInitialProperties() + \since 6.9 +*/ +void QQuickWidget::setInitialProperties(const QVariantMap &initialProperties) +{ + Q_D(QQuickWidget); + d->initialProperties = initialProperties; +} /*! Returns the source URL, if set. @@ -1248,7 +1264,9 @@ void QQuickWidget::continueExecute() return; } - QObject *obj = d->component->create(); + std::unique_ptr<QObject> obj(d->initialProperties.empty() + ? d->component->create() + : d->component->createWithInitialProperties(d->initialProperties)); if (d->component->isError()) { const QList<QQmlError> errorList = d->component->errors(); @@ -1260,7 +1278,8 @@ void QQuickWidget::continueExecute() return; } - d->setRootObject(obj); + if (d->setRootObject(obj.get())) + Q_UNUSED(obj.release()); emit statusChanged(status()); } @@ -1268,11 +1287,12 @@ void QQuickWidget::continueExecute() /*! \internal */ -void QQuickWidgetPrivate::setRootObject(QObject *obj) +bool QQuickWidgetPrivate::setRootObject(QObject *obj) { Q_Q(QQuickWidget); if (root == obj) - return; + return true; + if (QQuickItem *sgItem = qobject_cast<QQuickItem *>(obj)) { root = sgItem; sgItem->setParentItem(offscreenWindow->contentItem()); @@ -1296,7 +1316,10 @@ void QQuickWidgetPrivate::setRootObject(QObject *obj) q->resize(initialSize); } initResize(); + return true; } + + return false; } QPlatformBackingStoreRhiConfig QQuickWidgetPrivate::rhiConfig() const |
