2013-01-03 18 views
5

Ho più file QML. Voglio solo collegarli. Quindi voglio tornare alla mia home page da tutte le pagine a cui mi rivolgo. Sto usando il caricatore in ogni pagina Ecco il mio codice.utilizzando il caricatore in qml

import QtQuick 1.1 
Rectangle{ 
    id:welcome 
    width:480 
    height:272 
    Loader{ 
     id:loader 
     focus:false 
     anchors.fill: parent 
    } 
    gradient: Gradient { 
     GradientStop { position: 0.0; color: "light blue" } 
     GradientStop { position: 1.0; color: "blue" } 
    } 
    Text{ 
     text:"\n\t\tPRESS ENTER" 
     font.bold:true 
     font.pointSize: 17 
    } 
    Button { 
    id: wel 
     height:30; 
     x:parent.width/2-30 
     y:parent.height/2-30 
     focus:true 
     border.color:"black" 
     opacity: activeFocus ? 1.0 : 0.5 
     Text{ 
      text:"WELCOME" 
      anchors.horizontalCenter:wel.horizontalCenter; 
      anchors.verticalCenter:wel.verticalCenter; 
     } 
     Keys.onReturnPressed: { 
      wel.focus=false 
      loader.focus=true; 
      anchors.fill=parent 
      loader.source="Home.qml"; 
      //welcome.visible=false; 
     } 
    } 
} 

La mia domanda è quando clicco sul pulsante per caricare il nuovo file. Ma la pagina di benvenuto non andrà. Entrambi i file saranno sovrapposti. Quando ho fatto visible = false l'UI completa andrà. Ottengo uno schermo bianco. Qualcuno può aiutarmi a risolvere questo problema? Come caricare altro file?

risposta

4

Per caricare più pagine è necessario utilizzare l'elemento Connections per gestire il segnale dalla pagina caricata.

Loader { 
    id: windowLoader 
    source: "Welcome.qml" 
    focus: true 

    property bool valid: item !== null 
} 
Button { 
    Keys.onReturnPressed: { 
     windowLoader.source = "Page1.qml" 
    } 
} 
Connections { 
    ignoreUnknownSignals: true 
    target: windowLoader.valid? windowLoader.item : null 
    onChangeToPage2: { windowLoader.source = "Page2.qml" } 
    onPageExit: { windowLoader.source = "Welcome.qml" } 
} 

E dalle pagine si carica è necessario emettere il "changeToPage2" e "pageExit" signals. I segnali emessi verranno gestiti dall'elemento Connections.

Page1.qml:

Rectangle { 
    id: page1 
    signal changeToPage2 
    signal pageExit 
    Button { 
     id: exitButton 
     Keys.onReturnPressed: { page1.pageExit() } 
    } 
} 
+0

ho fatto tutto ciò che u suggerito. alcuni ciò che è migliorato. ma in ogni pagina di caricamento si diventa sbiaditi e alla fine sparisce ... e anche il testo di benvenuto dat e il testo all'interno del pulsante saranno visibili in ogni vista :( – geek

+0

L'ordine z degli oggetti dipende dalla sequenza in cui li si specifica Posiziona il Loader dopo il pulsante nel codice o imposta il valore z del Loader su un valore maggiore, quindi la nuova pagina deve trovarsi sopra i pulsanti. – Ajith

+1

Ignora il mio commento precedente. Se devi avere il pulsante visibile solo nella prima pagina, dovresti semplicemente creare il tuo pulsante nella tua pagina di benvenuto e caricare Welcome.qml da Main.qml, dove Main.qml non ha pulsanti, solo il Loader. – Ajith