2014-12-13 3 views
9

क्यूटी 5.4 में, नया "QtQuick UI फ़ाइल" बनाते समय टेम्पलेट दो फाइलें उत्पन्न करता है: MyScreen.qml और MyScreen.ui.qml.ui.qml फ़ाइलों के साथ काम करना

MyScreen.ui.qml फ़ाइल केवल यूआई के लिए प्रतीत होती है, क्योंकि क्यूटी निर्माता सुझाव देता है कि आपको इसे केवल डिज़ाइन मोड में संपादित करना चाहिए। इसका तात्पर्य है कि मुझे यूआई ऑब्जेक्ट्स (लेबल्स, बटन इत्यादि ...) बनाना चाहिए और किसी भी तरह उन्हें MyScreen.qml फ़ाइल में संदर्भित करना चाहिए जहां तर्क होगा। सिद्धांत रूप में यह बहुत अच्छा लगता है, लेकिन दुर्भाग्यवश क्यूटी इन 2 फ़ाइलों के साथ काम करने के तरीके के किसी भी उदाहरण के साथ नहीं आती है।

MyScreen.qml:

यहाँ उन फ़ाइलों की सामग्री हैं

import QtQuick 2.4 

MyScreen { 
} 

MyScreen.ui.qml (मैं डिज़ाइन मोड में पाठ लेबल जोड़ा):

import QtQuick 2.4 

Item { 
    width: 400 
    height: 400 

    Text { 
     id: text1 
     x: 144 
     y: 151 
     width: 103 
     height: 31 
     text: qsTr("Text") 
     font.pixelSize: 12 
    } 
} 

मैं एक MyScreen के लिए instantiating की कोशिश की StackView (नीचे देखें) में उपयोग करें, लेकिन (असुरक्षित रूप से) मुझे लेबल नहीं दिखाई देता है।

main.qml:

import QtQuick 2.4 
import QtQuick.Controls 1.3 
import QtQuick.Window 2.2 

Window { 
    visible: true 
    StackView { 
     id: stack 
     anchors.fill: parent 
     initialItem: myscreen 
    } 

    MyScreen { 
     id: myscreen 
     anchors.fill: parent 
    } 
} 

एक QML नौसिखिया के लिए कोई संकेत?

+1

कोई त्रुटि संदेश चलते समय दिखाया गया है? मुझे लगता है कि समस्या यह है कि आपके पास एक ही नाम के साथ दो घटक हैं: 'MyScreen'। MyScreen.qml और MyScreen.ui.qml दोनों 'MyScreen' ऑब्जेक्ट बनाता है और संघर्ष करते हैं। QtQuick UI फ़ाइल बनाते समय, "घटक नाम" और "घटक फ़ॉर्म नाम" को अलग-अलग नाम देने का प्रयास करें। – mcchu

+0

डुह :) धन्यवाद mcchu, अगर आप इसे उत्तर में रखते हैं तो मैं आपको कुछ अंक दूंगा! – Tim

उत्तर

3

QtCreator में QtQuick UI फ़ाइल बनाते समय, आपको "घटक नाम" और "घटक फ़ॉर्म नाम" का नाम अलग-अलग होना चाहिए।

MyScreen.qml, एक MyScreen घटक बनाता है लेकिन कार्यान्वयन में:

MyScreen { /* ... */} 

MyScreen रिकर्सिवली ही पैदा करता है।

इस मामले में, MyScreen.ui.qml प्रोजेक्ट में MyScreen घटक बनाता है। साथ ही, MyScreen.qml में कोड, जो QtCreator द्वारा स्वत: जेनरेट किया गया है, MyScreen.ui.qml द्वारा बनाए गए घटक MyScreen का उपयोग करता है। दुर्भाग्य से, MyScreen भी MyScreen.qml का नाम है और इसे रनटाइम पर खुद को पुन: बना देता है।

विभिन्न नामों का उपयोग समस्या को हल कर सकते हैं। उदाहरण के लिए, MyScreenForm.ui.qml पर MyScreen.ui.qml का नाम बदलें।

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