2013-01-03 22 views
5

私は複数のQMLファイルを持っています。私はそれらをリンクしたいだけです。それから私は私がナビゲートするすべてのページから私のホームページに戻りたいと思う。すべてのページでローダーを使用しています ここに私のコードです。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; 
     } 
    } 
} 

私の質問はボタンをクリックするたびに新しいファイルが読み込まれます。しかし、ウェルカムページは行かないでしょう。両方のファイルが重複します。私がvisible = falseにするとUIが完成します。白い画面が表示されます。 誰でもこの問題を解決する手助けはできますか? 他のファイルを読み込む方法は?

答えて

4

複数のページを読み込むには、ロードしたページの信号を処理するためにConnections要素を使用する必要があります。

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

そして、あなたは、あなたが「changeToPage2」と「pageExit」signalsを放出する必要がありますロードページから。発信された信号はConnections要素によって処理されます。

Page1.qml:

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

私はuが提案何でもやりました。その何が改善したかしかし、各読み込みページでは1つがぼやけてしまい、最終的には消えてしまいます。また、ウェルカムテキストとボタン内のテキストはすべてのビューで表示されます:( – geek

+0

項目のz順は、それらを指定する順序によって異なりますボタンの後にLoaderを配置するか、Loaderのz値を大きな値に設定してから、新しいページがボタンの上にくるようにしてください – Ajith

+1

前のコメントは無視してください。最初のページでは、ウェルカムページにボタンを作成してMain.qmlからWelcome.qmlをロードしてください。ここでMain.qmlにはボタンがありません。ローダーだけです – Ajith

関連する問題