qml

2013-01-03 14 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; 
     } 
    } 
} 

मेरा प्रश्न तब भी है जब मैं बटन को अपनी फ़ाइल लोड करने पर क्लिक करता हूं। लेकिन स्वागत पृष्ठ नहीं जायेगा। दोनों फाइलों को ओवरलैप किया जाएगा। जब मैंने देखा = झूठा पूरा यूआई जाएगा। मुझे एक सफेद स्क्रीन मिलती है। क्या कोई मुझे इस समस्या को ठीक करने में मदद कर सकता है? अन्य फ़ाइल कैसे लोड करें?

उत्तर

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 की आवश्यकता होगी। उत्सर्जित सिग्नल कनेक्शन तत्व द्वारा संभाले जाएंगे।

Page1.qml:

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

मैं जो कुछ यू का सुझाव दिया था। कुछ इसका क्या सुधार हुआ। लेकिन प्रत्येक लोडिंग पेज में कोई फीका हो जाता है और आखिरकार यह गायब हो जाता है .. और स्वागत टेक्स्ट भी होता है और बटन के अंदर टेक्स्ट प्रत्येक दृश्य में दिखाई देगा :( – geek

+0

आइटम का जेड ऑर्डर उस अनुक्रम पर निर्भर करता है जिसमें आप उन्हें निर्दिष्ट करते हैं कोड में बटन के बाद लोडर रखें, या लोडर के जेड वैल्यू को बड़े मान पर सेट करें, फिर नया पेज बटन पर होना चाहिए। – Ajith

+1

मेरी पिछली टिप्पणी को अनदेखा करें। अगर आपको केवल बटन दिखाई दे रहा है पहला पृष्ठ, आपको केवल आपका स्वागत पृष्ठ में अपना बटन बनाना चाहिए। और Main.qml से Welcome.qml लोड करें, जहां Main.qml के पास कोई बटन नहीं है, केवल लोडर। – Ajith

संबंधित मुद्दे