Loader,带参数的setSource

Loader, setSource with parameters

当我通过 Loader qml (setSource) 加载组件时,我应该在 Test.qml 项上设置 属性 stringa1 和 stringa2:

Page1.qml

import QtQuick 2.7

Page1Form {

    button1.onClicked: {
        console.log("Button Pressed. Entered text: " + textField1.text);
        itemLoader.setSource("Test.qml", {"stringa1": "ScrivoStr1"}, {"stringa2": "ScrivoStr2"})
    }

    itemToFill.children:
        Loader {
            anchors.fill: parent
            id: itemLoader
        }
}

Test.qml

import QtQuick 2.4

TestForm {

    property string stringa1
    property string stringa2

    signal setStr1(string str1)

    anchors.fill: parent

    Component.onCompleted: {

        button.text = stringa1 + " - " + stringa2

    }

    button.onClicked: console.log("Push");

}

当我使用以下命令设置 stringa1 和 stringa2 时:

itemLoader.setSource("Test.qml", {"stringa1": "ScrivoStr1"}, {"stringa2": "ScrivoStr2"})

Test.qml 只读 stringa1 值。

Qml Loader 组件和 Item 加载之间 set/transfer 参数的最佳方式是什么?谢谢指教

最好的问候 丹妮尔

应该是:

itemLoader.setSource("Test.qml", {"stringa1": "ScrivoStr1", "stringa2": "ScrivoStr2"})

注意 setSource is declared as:

object setSource(url source, object properties)

它只接受一个包含所有属性的对象。您正在传递多个对象。你的情况只考虑第一个,其他的都被丢弃。
如果必须使用多个参数,请将它们全部放在一个对象中。就这些了。