qml
संपत्ति का बंधन
खोज…
टिप्पणियों
एक वस्तु की संपत्ति को एक स्थिर मूल्य सौंपा जा सकता है जो स्थिर रहता है जब तक कि यह स्पष्ट रूप से एक नया मूल्य नहीं दिया जाता है। हालाँकि, QML का पूर्ण उपयोग करने और गतिशील ऑब्जेक्ट व्यवहार के लिए इसके अंतर्निहित समर्थन के लिए, अधिकांश QML ऑब्जेक्ट संपत्ति बाइंडिंग का उपयोग करते हैं।
प्रॉपर्टी बाइंडिंग QML की एक मुख्य विशेषता है जो डेवलपर्स को विभिन्न ऑब्जेक्ट गुणों के बीच संबंध निर्दिष्ट करने देती है। जब किसी संपत्ति की निर्भरता मूल्य में बदल जाती है, तो संपत्ति निर्दिष्ट संबंध के अनुसार स्वचालित रूप से अपडेट हो जाती है।
प्रॉपर्टी बाइंडिंग के बारे में मूल बातें
इस सरल उदाहरण पर विचार करें:
import QtQuick 2.7
import QtQuick.Controls 2.0
ApplicationWindow {
visible: true
width: 400
height: 640
Rectangle{
id: rect
anchors.centerIn: parent
height: 100
width: parent.width
color: "blue"
}
}
उपरोक्त उदाहरण में, Rectangle की चौड़ाई उसके माता-पिता के लिए बाध्य है। यदि आप रनिंग एप्लिकेशन विंडो की चौड़ाई बदलते हैं, तो आयत की चौड़ाई भी बदल जाती है।
एक और अधिक जटिल उदाहरण
सरल उदाहरण में, हम बस आयत की चौड़ाई को उसके माता-पिता के लिए निर्धारित करते हैं। आइए एक अधिक जटिल उदाहरण पर विचार करें:
ApplicationWindow {
visible: true
width: 400
height: 640
Rectangle{
id: rect
anchors.centerIn: parent
height: 100
width: parent.width/2 + parent.width/3
color: "blue"
}
}
उदाहरण में, हम बाइंड किए जा रहे मूल्य पर अंकगणितीय ऑपरेशन करते हैं। यदि आप रनिंग एप्लिकेशन विंडो को अधिकतम चौड़ाई में बदल देते हैं, तो आयत और एप्लिकेशन विंडो के बीच का अंतर व्यापक और इसके विपरीत होगा।
गतिशील रूप से निर्मित QML फ़ाइलों के साथ बाइंडिंग बनाएँ
जब सीधे उन्हें घोषित करके QML फ़ाइलों के उदाहरणों का उपयोग किया जाता है, तो प्रत्येक property एक बंधन बनाती है। यह उपरोक्त उदाहरणों में बताया गया है।
इस प्रकार आप गतिशील रूप से घटक बनाते हैं:
var component = Qt.createComponent("Popup.qml");
var popup = component.createObject(parent, {"width": mainWindow.width, "height": mainWindow.height});
जब mainWindow का आकार बदलता है, तो बनाए गए PopUp का आकार प्रभावित नहीं होता है। एक बंधन बनाने के लिए आप popup का आकार इस तरह निर्धारित करते हैं:
var component = Qt.createComponent("Popup.qml");
var options = {
"width": Qt.binding(function() { return mainWindow.width }),
"height": Qt.binding(function() { return mainWindow.height }),
};
var popup = component.createObject(parent, options);
अब PopUp का आकार mainWindow पर निर्भर करेगा।