aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDoris Verria <doris.verria@qt.io>2024-09-19 12:55:01 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2024-09-20 07:41:35 +0000
commit02ac9409e2d6932ec85c9778e2534c4165c89e0b (patch)
tree9a3df5e19145c73304719ea018936cae955988c5
parent99a8cd43f818a1259756474458ff58890b088d7c (diff)
QMLPreviewer Example: Use window container instead of qquickwidget
Tab-focusing between widgets and the quick view works better when using qwindowcontainer instead of qquickwidget. Changes are still ongoing to make this work for qquickwidget as well, so change the example to use qwindowcontainer for now. Change-Id: Ia01d34a4ebb0b8d9c607d1664b6cfc6df164e097 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> (cherry picked from commit 27357727c1fe0f1f74fdd326a1dee1ae0814d185) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 8af0b865e2978be4f97fffa10d41b8aec2b96784)
-rw-r--r--examples/quick/quickwidgets/qmlpreviewer/doc/src/qmlpreviewer.qdoc6
-rw-r--r--examples/quick/quickwidgets/qmlpreviewer/widgets/previewwidget.cpp26
-rw-r--r--examples/quick/quickwidgets/qmlpreviewer/widgets/previewwidget.h4
3 files changed, 19 insertions, 17 deletions
diff --git a/examples/quick/quickwidgets/qmlpreviewer/doc/src/qmlpreviewer.qdoc b/examples/quick/quickwidgets/qmlpreviewer/doc/src/qmlpreviewer.qdoc
index 1fc64a194c..6b694695ec 100644
--- a/examples/quick/quickwidgets/qmlpreviewer/doc/src/qmlpreviewer.qdoc
+++ b/examples/quick/quickwidgets/qmlpreviewer/doc/src/qmlpreviewer.qdoc
@@ -4,7 +4,7 @@
/*!
\title QML Previewer Example
\example quickwidgets/qmlpreviewer
- \brief Demonstrates how to mix QML with a Qt Widgets application using the QQuickWidget class.
+ \brief Demonstrates how to mix QML with a Qt Widgets application using QWidget::createWindowContainer().
\examplecategory {User Interface Components}
\image qmlpreviewer-example.png
@@ -16,6 +16,8 @@
\li Tab focusing between widgets and Qt Quick
\li Drag and drop between widgets and Qt Quick
\li Shortcuts defined in the embedded QML file
- \li Embedding a QQuickWidget inside a layout
+ \li Embedding a QQuickView inside a QLayout
\endlist
+
+ \sa QWidget::createWindowContainer()
*/
diff --git a/examples/quick/quickwidgets/qmlpreviewer/widgets/previewwidget.cpp b/examples/quick/quickwidgets/qmlpreviewer/widgets/previewwidget.cpp
index c75b07b37a..c15efbc532 100644
--- a/examples/quick/quickwidgets/qmlpreviewer/widgets/previewwidget.cpp
+++ b/examples/quick/quickwidgets/qmlpreviewer/widgets/previewwidget.cpp
@@ -6,7 +6,7 @@
#include <QListView>
#include <QQmlEngine>
-#include <QQuickWidget>
+#include <QQuickView>
#include <QSplitter>
#include <QVBoxLayout>
@@ -14,7 +14,7 @@ PreviewWidget::PreviewWidget(QWidget *parent)
: QWidget{parent}
, m_errorListModel{this}
, m_errorListView{new QListView}
- , m_quickWidget{new QQuickWidget}
+ , m_quickView{new QQuickView}
{
initUI();
setupConnections();
@@ -22,13 +22,13 @@ PreviewWidget::PreviewWidget(QWidget *parent)
QString PreviewWidget::sourcePath() const
{
- return m_quickWidget->source().toString();
+ return m_quickView->source().toString();
}
void PreviewWidget::setSourcePath(const QString &path)
{
- m_quickWidget->engine()->clearComponentCache();
- m_quickWidget->setSource(QUrl::fromLocalFile(path));
+ m_quickView->engine()->clearComponentCache();
+ m_quickView->setSource(QUrl::fromLocalFile(path));
}
void PreviewWidget::initUI()
@@ -38,15 +38,15 @@ void PreviewWidget::initUI()
m_errorListView->setWordWrap(true);
m_errorListView->setSpacing(4);
- m_quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
+ m_quickView->setResizeMode(QQuickView::SizeRootObjectToView);
- QSizePolicy sizePolicy = m_quickWidget->sizePolicy();
- sizePolicy.setVerticalStretch(1);
- m_quickWidget->setSizePolicy(sizePolicy);
+ QWidget *container = QWidget::createWindowContainer(m_quickView);
+ container->setMinimumSize(m_quickView->size());
+ container->setFocusPolicy(Qt::TabFocus);
QSplitter *splitter = new QSplitter{this};
splitter->setOrientation(Qt::Vertical);
- splitter->addWidget(m_quickWidget);
+ splitter->addWidget(container);
splitter->addWidget(m_errorListView);
QVBoxLayout *layout = new QVBoxLayout;
@@ -59,7 +59,7 @@ void PreviewWidget::setupConnections()
{
connect(StateController::instance(), &StateController::stateChanged, this,
&PreviewWidget::onAppStateChanged);
- connect(m_quickWidget, &QQuickWidget::statusChanged, this,
+ connect(m_quickView, &QQuickView::statusChanged, this,
&PreviewWidget::onQuickWidetStatusChanged);
connect(m_errorListView, &QAbstractItemView::doubleClicked, &m_errorListModel,
&ErrorListModel::selectIndex);
@@ -84,8 +84,8 @@ void PreviewWidget::onAppStateChanged(int oldState, int newState)
void PreviewWidget::onQuickWidetStatusChanged(int status)
{
switch (status) {
- case QQuickWidget::Error:
- m_errorListModel.setErrorList(m_quickWidget->errors());
+ case QQuickView::Error:
+ m_errorListModel.setErrorList(m_quickView->errors());
break;
default:
m_errorListModel.setErrorList({});
diff --git a/examples/quick/quickwidgets/qmlpreviewer/widgets/previewwidget.h b/examples/quick/quickwidgets/qmlpreviewer/widgets/previewwidget.h
index 16b739a900..e634d8f606 100644
--- a/examples/quick/quickwidgets/qmlpreviewer/widgets/previewwidget.h
+++ b/examples/quick/quickwidgets/qmlpreviewer/widgets/previewwidget.h
@@ -8,7 +8,7 @@
#include <QWidget>
class QListView;
-class QQuickWidget;
+class QQuickView;
class PreviewWidget : public QWidget
{
@@ -33,7 +33,7 @@ private slots:
private:
ErrorListModel m_errorListModel;
QListView *m_errorListView = nullptr;
- QQuickWidget *m_quickWidget = nullptr;
+ QQuickView *m_quickView = nullptr;
};
#endif // PREVIEWWIDGET_H