【问题标题】:Loader, setSource with parameters加载器,带参数的 setSource
【发布时间】:2017-06-30 15:23:12
【问题描述】:

当我通过 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 组件和加载的项目之间设置/传输参数的最佳方式是什么?谢谢指教

最好的问候 丹尼尔

【问题讨论】:

    标签: c++ qt qml loader


    【解决方案1】:

    应该是:

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

    注意setSourceis declared as:

    object setSource(url source, object properties)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多