我面臨着一個很大的問題,它需要花費很多時間才能修復,因爲我不知道原因以及如何解決該問題。該問題是非常簡單的:我有一個例子QML組件定義爲:QML雙向C++綁定不再收到更改
Rectangle {
id: rect
property bool test: myclass.testproperty
Rectangle {
width: 50
height: 50
visible: parent.test
}
}
和我連接的鼠標區域onClicked信號做到這一點:
test = !test
所以我切換布爾變量的值。爲推動從C++價值QML和QML到C++ Q_PROPERTY具有讀,寫和NOTIFY信號,我使用,直到我點擊鼠標區域,所以我通過結合推動改變這種
Binding {
target: myclass
property: "testproperty"
value: rect.test
}
一切工作正常。之後,每次我嘗試從C++設置新的屬性值時,我都看不到QML中的任何更改,就像綁定被破壞一樣。但是,如果我嘗試點擊MouseArea,我仍然調用C++類的setTestProperty方法。基本上,它不同步C++ - > QML方式。爲什麼?我無法找到問題,信號被髮射,因爲QSignalSpy給了我1作爲發射次數計使用
emit this->testPropertyChanged(newvalue)
編輯
這裏的例子之後:基本上在這裏我們使用的QString財產與相同的確切信號。唯一改變的事情是,而是採用了矩形QML元素,結合到自己的財產,我使用一個TextInput元素
TextInput {
id: mytext
text: myclass.testproperty
}
Binding {
target: myclass
property: "testproperty"
value: mytext.text
}
如果我用的是同樣的事情,但與文本組件和相關文件的屬性它的工作原理。爲什麼? – Stefano 2012-08-11 10:37:00
我不知道,爲什麼雙向綁定與Text對象一起工作。你能舉個例子嗎? – 2012-08-11 15:48:29
增加了一個非常小的例子 – Stefano 2012-08-11 16:02:38