원인을 모르거나 수정하는 방법을 모르기 때문에 수정해야 할 시간이 오래 걸리는 큰 문제에 직면하고 있습니다. 문제는 실제로 간단 I는 QML 성분으로 정의 일례 가지고QML 양방향 C++ 바인딩은 더 이상 변경 사항을 수신하지 않습니다.
Rectangle {
id: rect
property bool test: myclass.testproperty
Rectangle {
width: 50
height: 50
visible: parent.test
}
}
및 I는 MouseArea 이렇게하는 신호 onClicked 접속 :
test = !test
이렇게 I는 불리언 변수의 값을 스위치. 쓰기 신호를 통지 QML과 QML에서 READ와 C++ Q_PROPERTY에 ++ C의 값을 밀어하기 위해, 나는 내가 mouseArea 클릭하고 그래서 바인딩을 통해 변경 사항을 밀어 때까지이
Binding {
target: myclass
property: "testproperty"
value: rect.test
}
모든 것이 잘 작동 사용 . 그 후, C++에서 새 속성 값을 설정하려고 할 때마다 바인딩이 삭제 된 것처럼 QML에 변경 사항이 표시되지 않습니다. 그러나 MouseArea를 클릭하려고해도 C++ 클래스의 setTestProperty 메서드를 호출합니다. 기본적으로 C++ -> QML 방식과 동기화되지 않습니다. 왜? 기본적으로 여기에 우리가 QString을 사용하고 있습니다 : QSignalSpy 여기에 예를
emit this->testPropertyChanged(newvalue)
편집
사용 후 방출 시간의 계산으로 나에게 일을 제공하기 때문에 나는 신호가 방출되는 문제를 찾을 수 없습니다 속성과 똑같은 신호. 변경 유일한 대신 사각형 QML 요소를 사용하고 자신의 속성에 바인딩의, 나는 TextInput 구성 요소
TextInput {
id: mytext
text: myclass.testproperty
}
Binding {
target: myclass
property: "testproperty"
value: mytext.text
}
나는 그것이 작동 같은 일을하지만, 텍스트 구성 요소 및 관련 텍스트 속성을 사용합니다. 왜? – Stefano
텍스트 객체로 양방향 바인딩이 작동하는 이유를 모르겠습니다. 예를 들어 줄 수 있습니까? –
정말 작은 예제가 추가되었습니다 – Stefano