[Interest] Mixing QWidgets and QtQuickControls 2

Harald Vistnes harald.vistnes at gmail.com
Fri Nov 11 14:09:33 CET 2022


Hello,

I have a quite big QWidgets based application and I am considering
migrating portions of it to use Qt Quick Controls 2. I'm new to
QML/QtQuick, so I decided to start very simple and test how to migrate my
About dialog (QDialog).

I tried replacing

AboutDialog dlg(this);
dlg.exec()

with

    auto *widget = new QQuickWidget();
    widget->setAttribute(Qt::WA_DeleteOnClose);
    widget->resize(600,300);
    widget->setResizeMode(QQuickWidget::SizeRootObjectToView );
    widget->setSource(QUrl(QStringLiteral("qrc:qml/about.qml")));
    widget->show();

This sort of worked. But if I in my QML used a Window or Dialog as root
entity, 2 windows opened, a black window for the QQuickWidget and another
window with the about dialog. If I changed the root entity to a Rectangle
instead, then the about QML was drawn in the correct window.

However, I have a Close button that should close the dialog. This has no
effect right now. I haven't found a way to connect the click on the close
button to the closing of the QQuickWidget.

So the question is, what is the best way for migrating a QWidgets based
dialog to a Qt Quick Controls based dialog? Should I not use QQuickWidget
for standalone dialogs, but instead trigger the QML in another way? Or
embed the QQuickWidget inside a QDialog? Or use QQmlApplicationEngine
directly?

Best regards,
Harald
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20221111/4e17673a/attachment.htm>


More information about the Interest mailing list