diff options
| author | Doris Verria <doris.verria@qt.io> | 2024-09-19 12:55:01 +0200 |
|---|---|---|
| committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2024-09-20 07:41:35 +0000 |
| commit | 02ac9409e2d6932ec85c9778e2534c4165c89e0b (patch) | |
| tree | 9a3df5e19145c73304719ea018936cae955988c5 | |
| parent | 99a8cd43f818a1259756474458ff58890b088d7c (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)
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 |
