मेरे पास CheckBox
es की एक साधारण सूची है, जो सप्ताह के प्रत्येक दिन के लिए एक है। वे days
के मान पर निर्भर करते हैं, एक मुखौटा का उपयोग करने वाला एक पूर्णांक, प्रत्येक CheckBox
के लिए 1 बिट।क्यूटी 5.7 क्यूएमएल क्यों मेरी चेकबॉक्स संपत्ति बाइंडिंग गायब हो रही है?
"सभी साफ़ करें" बटन या "सभी सेट करें" बटन के साथ days
पर असाइन करना और वे अपडेट करते हैं। हालांकि, एक बार किसी भी बॉक्स पर क्लिक करने के बाद, वे अब निर्भर संपत्ति days
में परिवर्तनों का जवाब नहीं देते हैं।
यह क्यों है? क्या वे किसी भी तरह से अनबाउंड हो रहे हैं। यदि हां, तो क्या मुझे मैन्युअल रूप से उन्हें बाध्यकारी करना चाहिए, और यदि ऐसा है तो क्यों?
कोड यह रहा,
import QtQuick 2.7
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.3
ApplicationWindow
{
visible: true
width: 800
height: 400
property int days: 0
ColumnLayout
{
Repeater
{
model: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
CheckBox
{
text: modelData
checked: (days & (1<<index)) != false
onClicked:
{
if (checked) days |= (1<<index);
else days &= ~(1<<index);
}
}
}
Button
{
text: "clear all"
onClicked: days = 0
}
Button
{
text: "set all"
onClicked: days = 127
}
}
}
जो इस तरह दिखता है:
"पूरी तरह से तैयार" और "सब स्पष्ट" पर समस्या पहले क्लिक पुन: पेश करने के लिए। फिर कुछ चेकबॉक्स पर क्लिक करें। फिर फिर से "सभी सेट करें" पर क्लिक करें और "सभी साफ़ करें" पर क्लिक करें। आप देखेंगे कि आपके द्वारा चेक किए गए बॉक्स अब प्रभावित नहीं हैं।
धन्यवाद।
बहुत बहुत धन्यवाद! आपका जवाब एक इलाज करता है। मुझे एहसास नहीं हुआ था कि 'दिन' को असाइन करने से 'चेक किए गए 'की निर्भरता टूट जाएगी। स्पष्टीकरण के लिए धन्यवाद। –
'दिनों' ** को असाइन करने से ** ** चेक की गई संपत्ति को तोड़ने का कारण नहीं है। चेकबॉक्स पर वास्तविक उपयोगकर्ता क्लिक करने का कारण बनता है। इसके बारे में इस तरह से सोचें। 'OnClicked' कहने से ठीक पहले, क्यूटी ने 'चेक = सत्य' का आह्वान किया; इस प्रकार आपकी सशर्त ओवरराइडिंग। – selbie
हां आप बिल्कुल सही हैं। यह वास्तविक क्लिक द्वारा किया जाता है।स्पष्टीकरण देने के लिए धन्यवाद। –