2017-04-18 3 views
0

Ich werde versuchen, mein Problem mit einem einfachen Beispiel zu erklären.Wie man eine QML-Komponente bei Klick lädt

Ich habe eine Rectangle A und eine Rectangle B. Ich möchte, dass, wenn Sie auf A klicken, eine view (zum Beispiel eine listView) in B geladen wird. Wenn Sie erneut auf A klicken, verschwindet die listView. Ich weiß, es ist etwas über class Loader, aber ich habe Probleme, damit es richtig funktioniert.

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

Kann jemand ein einfaches Beispiel geben?

Hinweis: Ich möchte visible nicht verwenden, da ich data aktualisieren muss, wenn auf das Rechteck geklickt wird.

+0

Verwenden Sie ein 'Loader' Element – dtech

+0

Danke, aber das ist genau meine Frage, wie man es hier benutzt. –

+0

Haben Sie versucht, die Dokumentation zu lesen? Das ist wirklich grundlegende Dinge, mit denen Sie kein Problem haben sollten. http://doc.qt.io/qt-5/qml-qtquick-loader.html – dtech

Antwort

1

Hier ist ein einfaches Beispiel:

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 
     } 
    } 
} 

Wenn Sie A der Zustand des Laders Änderungen und Komponente comp Laden/Entladen auf Rechteck klicken.

+0

Vielen Dank! –

Verwandte Themen