summaryrefslogtreecommitdiff
path: root/src/plugins/qmldesignerbase/utils/studioquickwidget.cpp
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2023-02-16 18:51:41 +0100
committerTim Jenssen <tim.jenssen@qt.io>2023-02-17 16:01:32 +0000
commitf681b696e920e00af60ff2533e47bac855a7d5dc (patch)
tree95ff7751b05c6cd077388a30f96eab0075c2f357 /src/plugins/qmldesignerbase/utils/studioquickwidget.cpp
parent9e2926c537ed311baf8f382c0550aa63953a30de (diff)
downloadqt-creator-f681b696e920e00af60ff2533e47bac855a7d5dc.tar.gz
QmlDesigner: Add StudioQuickWidget
This makes it easy to share the QQmlEngine between different QQuickWidgets. All StudioQuickWidgets share the same engine. Change-Id: I2b370a45a14fdc143e161e2aca62b45aa0d91da9 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/plugins/qmldesignerbase/utils/studioquickwidget.cpp')
-rw-r--r--src/plugins/qmldesignerbase/utils/studioquickwidget.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/plugins/qmldesignerbase/utils/studioquickwidget.cpp b/src/plugins/qmldesignerbase/utils/studioquickwidget.cpp
new file mode 100644
index 0000000000..8e19e71a56
--- /dev/null
+++ b/src/plugins/qmldesignerbase/utils/studioquickwidget.cpp
@@ -0,0 +1,60 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
+
+#include "studioquickwidget.h"
+
+#include <QVBoxLayout>
+#include <QtQml/QQmlEngine>
+
+QQmlEngine *s_engine = nullptr;
+
+StudioQuickWidget::StudioQuickWidget(QWidget *parent)
+ : QWidget{parent}
+{
+ if (!s_engine)
+ s_engine = new QQmlEngine;
+
+ m_quickWidget = new QQuickWidget(s_engine, this);
+
+ QVBoxLayout *layout = new QVBoxLayout(this);
+ setLayout(layout);
+ layout->setContentsMargins(0, 0, 0, 0);
+ layout->addWidget(m_quickWidget);
+}
+
+QQmlEngine *StudioQuickWidget::engine() const
+{
+ return m_quickWidget->engine();
+}
+
+QQmlContext *StudioQuickWidget::rootContext() const
+{
+ return m_quickWidget->rootContext();
+}
+
+QQuickItem *StudioQuickWidget::rootObject() const
+{
+ return m_quickWidget->rootObject();
+}
+
+void StudioQuickWidget::setResizeMode(QQuickWidget::ResizeMode mode)
+{
+ m_quickWidget->setResizeMode(mode);
+}
+
+void StudioQuickWidget::setSource(const QUrl &url)
+{
+ m_quickWidget->setSource(url);
+}
+
+void StudioQuickWidget::refresh() {}
+
+void StudioQuickWidget::setClearColor(const QColor &color)
+{
+ m_quickWidget->setClearColor(color);
+}
+
+QList<QQmlError> StudioQuickWidget::errors() const
+{
+ return m_quickWidget->errors();
+}