2017-04-18 1 views
0

Je vais essayer d'expliquer mon problème avec un exemple simple. J'ai un Rectangle A et un Rectangle B. Je veux que lorsque vous cliquez sur A, un view (par exemple un listView) est chargé dans B. Si vous cliquez à nouveau sur A, le listView disparaîtra. Je sais que c'est quelque chose à propos de class Loader mais j'ai du mal à le faire fonctionner correctement.Comment charger un composant QML sur clic

Rectangle { 
    id: A 
    MouseArea { 
     anchors.fill: parent 
     onClicked { 
      //Load or Close listView 
     } 
    } 
} 
Rectangle { 
    id:B 
    //here load or unload the listView 
} 

Est-ce que quelqu'un pourrait fournir un exemple simple?

NB: Je ne souhaite pas utiliser visible car j'ai besoin de rafraîchir data lorsque le rectangle est cliqué.

+0

Utiliser un élément 'Loader' – dtech

+0

Merci, mais c'est exactement ma question, comment l'utiliser ici. –

+0

Avez-vous essayé de lire la documentation? Ce sont des choses vraiment basiques que vous ne devriez pas avoir de problème. http://doc.qt.io/qt-5/qml-qtquick-loader.html – dtech

Répondre

1

Voici un exemple simple:

Rectangle { 
    id: A 
    MouseArea { 
     anchors.fill: parent 
     onClicked { 
      ld.active = !ld.active 
     } 
    } 
} 

Rectangle { 
    id:B 

    Loader { 
     id: ld 

     sourceComponent: comp 
     active: false 
     anchors.fill: parent 
    } 

    Component { 
     id: comp 

     Rectangle { //replace this with your listview 
       color: blue 
     } 
    } 
} 

Lorsque vous cliquez sur le rectangle A l'état des changements de chargeur et composants comp chargement/déchargement.

+0

Merci beaucoup! –