Implement functionality of multiple windows in same QML file?
-
Hello, this is my first post here :) So, In my Qt Quick(Qt v5.4 and QtQuick 2.4) project I have these five .qml
1.MainForm.ui.qml - Which contains the main window of the application
2.main.qml - Contains all the functionality implementations of objects of mainForm.ui.qml, such as onClicked events, calling c++ functions getting value from textInputs etc.Q: Is my current setup for implementing functionality correct? Or should I implement all these things in the same file??
- dialog1.qml - Contains some text inputs for some settings etc.
- dialog2.qml - For some lists and tables in my application.
- dialog3.qml - Also contains some objects for an c++ function.
All these qml files are created and destroyed at different times, on different button clicks. I'm using this method to open a dialog
@addMenuArea.onClicked: {
Qt.createComponent("addMenuAppDialog.qml").createObject(rootWindow, {});
}@and for destroying the dialog:
@MouseArea{
anchors.fill: parent
onClicked: {
dialogComponent.destroy()
}
}@Now currently these dialogs doesn't have any functionality, like the main window, I want to do implement it all in one file(main.qml) without any javascript if possible. I have no Idea on how to link all the dialogs and main.qml so I can add the functions in main.qml. Is there a way to link these files using Loader QML type?
Thanks!
-
Hi,
You can use Window element in you main.qml file, something like this:
@
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2ApplicationWindow {
title: qsTr("Hello World")
width: 640
height: 480
visible: truemenuBar: MenuBar { Menu { title: qsTr("&File") MenuItem { text: qsTr("&Open") onTriggered: { dialog1.show(); } } MenuItem { text: qsTr("E&xit") onTriggered: Qt.quit(); } } } Window { id: dialog1 width: 400 height: 500 }
}
@But you must remember in this case all resources will load when main.qml will loaded. And this is not good for optimize application. I think you need to use dynamic load the windows in your application.