मैं एक पुन: प्रयोज्य QML घटक बनाने का प्रयास कर रहा हूं जो आंतरिक रूप से ग्रिड व्यू होस्ट करता है। ग्रिड व्यू में प्रत्येक तत्व में व्यवहार का एक सेट होता है (ज्यादातर डिस्प्ले और माउस-आधारित सामान) जो पूरे एप्लिकेशन में आम है। हालांकि, ग्रिड व्यू तत्वों के अंदर क्या प्रदर्शित होता है उपयोग-मामले के आधार पर बदलता है। (यानी, एक ग्रिड व्यू के लिए एक ही encapsulated घटक है, लेकिन आवेदन में कहीं और यह एक अलग घटक का उपयोग कर सकते हैं।)क्यूएमएल: मैं ग्रिड व्यू (या लिस्ट व्यू) प्रतिनिधि के अंदर लोड किए गए प्रतिनिधि को मॉडल गुण कैसे पास कर सकता हूं?
तो, मैं क्या करना चाहता हूं प्रत्येक आवेदक आपूर्ति एक प्रतिनिधि है जो प्रत्येक तत्व में जोड़ा जाता है ग्रिड व्यू में, जो पहले से ही एक प्रतिनिधि है। दूसरे शब्दों में, कुछ इस तरह:
MyGrid.qml
import QtQuick 1.1
Rectangle {
id: myGrid
objectName: "myGrid"
property Component internalDelegate
property variant internalModel
GridView {
anchors.fill: parent
delegate: Row {
Loader {
sourceComponent: myGrid.internalDelegate
}
}
model: parent.internalModel
}
}
विचार है कि GridView प्रतिनिधि अंदर लोडर को लोड करता है उपयोगकर्ता के आपूर्ति प्रतिनिधि, कुछ इस तरह दिखेगा जो है:
Main.qml
import QtQuick 1.1
Rectangle {
anchors.fill: parent
width: 300
height: 200
MyGrid {
anchors.fill: parent
internalDelegate: Text {
text: name
}
internalModel: ListModel {
ListElement {
name: "a"
}
ListElement {
name: "b"
}
}
}
}
हालांकि
, इस नहीं है काम। क्यूएमएल रिपोर्ट करता है कि टेक्स्ट नाम के अंदर "नाम" अज्ञात चर है। यदि मैं नाम चर को एक स्ट्रिंग (यानी "हैलो") से प्रतिस्थापित करता हूं, तो यह अपेक्षा के अनुसार काम करता है।
मेरा सवाल यह है कि, मैं "नाम" चर को आंतरिक डिलीगेट में कैसे पास कर सकता हूं, या बेहतर अभी तक, संपूर्ण मॉडल को इतना आंतरिक उपलब्ध कर सकता हूं। डिलीगेट उन सभी तक पहुंच सकता है (क्योंकि कॉलर मॉडल को भी परिभाषित कर रहा है)।
एक साइड सवाल यह है: क्या ऐसा करने का कोई बेहतर तरीका है?
मैं घाव मेरी परियोजना के लिए अपनी तकनीक का उपयोग कर। कम कोड बेहतर है और मुझे यह पसंद है कि यह बाध्यकारी घटक की पूरी तरह से आवश्यकता को कैसे हटा देता है। धन्यवाद! –