मैं पर काम कर रहा हूँ एक QML परियोजना है । यूआई में मैं पर काम कर रहा हूँ, मैं की जरूरत है दोनों के लिए अद्यतन स्लाइडर C++ से पढ़ने के लिए और वर्तमान मूल्य में C++ से QML. गुण लगता है होना करने के लिए सही समाधान है । अब तक मैंने पढ़ा है विभिन्न सवालों पर तो सफलता के बिना दो तरह से बाध्यकारी C++ में QML, बदल गुण नहीं ट्रिगर संकेत, आदि... मेरे वर्तमान कोड मैं की घोषणा की संपत्ति में C++ वर्ग
class MyClass : public QObject {
Q_OBJECT
public:
MyClass(QObject*);
Q_PROPERTY(double myValue READ getMyValue WRITE setMyValue NOTIFY myValueChanged)
void setMyValue(double n) {
std::cerr << "myValue being update: " << n << "\n";
myValue = n;
}
double myValue = 30;
...
}
और यह क्यूटी के माध्यम से एक सिंगलटन
qmlRegisterSingletonInstance("com.me.test", 1, 0, "MyClass", &myClass);
तो बाध्य C++ संपत्ति के लिए एक QML स्लाइडर
import com.me.test
ApplicationWindow {
Slider {
id: slider
height: 30
width: 100
from: 0
to: 100
value: myClass.myValue
onValueChanged {
console.log("value = " + value)
console.log("myClass.myValue = " + myClass.myValue)
}
/* Doesn't help
Binding {
target: slider
property: "value"
value: myClass.myValue
}*/
}
}
बाध्यकारी काम करने लगता है. मैं संशोधित कर सकते हैं के मूल्य myValue
फिर फेंकना myValueChanged
बनाने के लिए QML अद्यतन यह स्लाइडर. लेकिन यह देखते हुए कि myClass.myValue
घिरा हुआ है slider.value
. मुझे लगता है कि दोनों के मूल्यों को अद्यतन किया जाता है एक ही समय में. लेकिन स्लाइडर खींचने से पता चलता है कि वे विभिन्न मूल्यों. निम्नलिखित यह क्या है मुद्रित कंसोल में जब मैं खींचें मेरी स्लाइडर.
qml: value = 19.863013698630137
qml: myClass.myValue = 30
इसके अलावा setMyValue
लगता है के लिए नहीं बुलाया जा रहा है जब तक एक स्पष्ट असाइनमेंट की तरह बना दिया है myClass.myValue = 0
. मैं भी करने की कोशिश की बाध्यकारी घटक के बिना सफलता. क्यों है इस मामले में हो सकता है और मैं C++ संपत्ति अद्यतन जब भी मैं स्लाइडर खींचें?
क्यूटी: 6.2.1
संकलक: बजना/जीसीसी
ओएस: Windows/लिनक्स
अद्यतन: परीक्षण किया है, एक रिवर्स बाध्यकारी है । अभी भी मुद्रण एक ही परिणाम
import com.me.test
ApplicationWindow {
Slider {
id: slider
height: 30
width: 100
from: 0
to: 100
value: myClass.myValue
onValueChanged {
console.log("value = " + value)
console.log("myClass.myValue = " + myClass.myValue)
}
Binding {
target: myClass
property: "myValue"
value: slider.value
}
}
}
myClass.myValue
अद्यतन किया जाएगा और आग जाएगा अपनीmyValueChanged
?