2017-06-30 1 views
1

je définir la propriété stringa1 et stringa2 sur l'article Test.qml lorsque je charge le composant à travers Loader qml (setSource):Loader, setSource avec des paramètres

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"); 

} 

Quand je mets stringa1 et stringa2 avec la commande suivante:

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

Test.qml lit uniquement la valeur stringa1.

Quelle est la meilleure façon de définir/transférer des paramètres entre le composant Qml Loader et l'élément chargé? Merci d'avis

Cordialement Daniele

Répondre

1

Il devrait être:

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

Notez que setSourceis declared as:

object setSource(url source, object properties) 

Il accepte qu'un seul objet qui contient toutes les propriétés. Vous passiez plusieurs objets à la place. Seul le premier est pris en considération dans votre cas, tous les autres sont mis au rebut.
Si vous devez utiliser plusieurs paramètres, placez-les tous dans un seul objet. C'est tout.

+0

Cela fonctionne, merci. – daniele86