I have a requirement for my project to display two QML Window
s each on one of the screen (one sender, one receiver). Both of the .qml
requires me to include some Cpp models inside hence, I'm using QQmlApplicationEngine
to register the Cpp models.
I found out that using QWidget::createWindowContainer()
I'm able to display multiple Window
s for a single project. This works perfectly fine for the first QML file. The code snippets looks like this:
QQmlApplicationEngine* engine = new QQmlApplicationEngine(Qurl("main.qml"));
QmlContext* context = engine.getContextProperty();
//do some Cpp models registering...
QQuickview *view = new QQuickview(engine,0);
QWidget* container = widget::createWindowContainer(view);
//I realized I dont need to do container->show(); for the main.qml to appear..
//use desktop widget to move the 2nd container to the 2nd screen...
I decided to create a 2nd application engine for my receive.qml
with a similar method. I soon realized that the receive.qml
would never open even with container2->show()
. Now, it is showing an empty page.
My questions are:
- Is my approach correct or is there a better solution for this?
- What signal do I need look out for to catch the window close event? I cant seem to be able to detect the signal when one of the window is closed. as I wanted to close the both when one has been detected.
That can be done easier, for example:
main.qml
And so you can access these windows from C++ code:
main.cpp
To catch a closing event you should use QQuickWindow::closing event