Solved Placing QML window over Qt dialog
-
Hi,
I created a busy indicator in qml and want to place it over a dialog. Currently this is what I have:
under qml.qrc Busy.qml (and BusyForm.ui):import QtQuick 2.6 import QtQuick.Window 2.2 Window { visible: true width: 100 height: 100 modality: Qt.ApplicationModal flags: Qt.FramelessWindowHint BusyForm { Image { id: container source: "images/busy.png"; NumberAnimation on rotation { running: container.visible from: 0; to: 360; loops: Animation.Infinite; duration: 1200 } } } }
In main.cpp:
#include "mainwindow.h" #include "ui_display.h" #include <QApplication> #include <QQmlApplicationEngine> int main(int argc, char* argv[]) { QApplication a(argc, argv); MainWindow w; QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/Busy.qml"))); if (engine.rootObjects().isEmpty()) return -1; w.show(); return a.exec(); }
The project builds without error. How can I call Busy.qml from a dialog so the busy widget would appear above the dialog?
Thank you. -
You would like to place the your busy.qml over object 'w' ? Object 'w' is an instance MainWindow. Is the MainWindow inherited from QMainWindow/QWidget ? if yes, this means that you are mixing Qt widget and QML. Please look at this topic.
Also you should create component & object from Busy.qml using Qt.createComponen & createObject. After that you should be able do this.
-
@dheerendra
There is an other dialog over which I would like to place the qml. -
what is that 'other dialog' means ?. Is it QML component or QWidget based dialog ?
-
@dheerendra
Hi,
It is a QWidget based dialog. -
You can embed the QML Window inside the QWIdget based UI. Hope you have looked createWindowContainer function of QWidget.
-
Thank you.