Передать значение из дочернего QtQuck QML в основной QML - PullRequest
0 голосов
/ 15 апреля 2020

Я должен передать некоторые значения из дочернего QML, открытого с компонентом, в основной QML и использовать их для выполнения каких-либо действий в основном QML.

Это мои два файла QML:

У меня есть почта .qml вот так:

import QtQuick 2.10
import QtQuick.Window 2.10
import QtQuick.Controls 2.3

ApplicationWindow {
    id: applicationWindow

    property string selected_contact_account_str: String()

    /* Contacts */
    function createContacts() {
        var component = Qt.createComponent("ContactList.qml");
        console.log("Component Status:", component.status, component.errorString());
        var window = component.createObject(applicationWindow, {"x": 0, "y": 0});
        window.showFullScreen();
    }

    Icon {
        id: contacts
        anchors.top: parent.top
        anchors.topMargin: 60
        anchors.left: parent.left
        anchors.leftMargin: 20
        iconsize: 96
        iconsource: "content/contacts_icon.png"
        iconname: "Contacts"
        fontsize: 14

        MouseArea {
            anchors.fill: parent
            onClicked: createContacts()
        }
    }
    /* End Contacts */
}

И файл ContactList.qml с кнопкой:

import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Window 2.2

ApplicationWindow {
    id: contactsList

    Item {

        Item {
            id: appContainer
            anchors.fill: parent
            anchors.centerIn: parent

            Button {
                 id: contact_select
                 text: qsTr("Select")

                 onClicked: {
                      // I want to pass value from here to main.qml
                      // store in selected_contact_account_str
                      // So I can use it in mail.qml
                 }
         }
     }
}

Как мне это сделать?

1 Ответ

0 голосов
/ 15 апреля 2020

вы можете использовать сигнал и слот, чтобы сделать это. В

ApplicationWindow

id: contactsList
signal sendmessage(var message)
    .
    .
    .
    onClicked: {
           contactsList.sendmessage("test");
    }

, затем в первом файле

function createContacts() {
     window.sendmessage.connect(handleMessage)
}
function handleMessage(message){

}
...