에서 일하고 있어요 유저 프로젝트입니다. UI 에서 일하고,필요 모두 업데이트 슬라이더에서는 C++를 읽고 현재 값으로 C++에서의 프로그램입니다... 속성이 될 것으로 보인 솔루션입니다. 지금까지 읽었어요 다른 질문에 그렇지 않고 성공의 두 가지 방법으로는 바인딩 C++모델에서의 프로그램입니다.., 속성을 변경하지 않 트리거 신호,등등....에서 현재를 선언한 숙박 시설에 나의 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;
...
}
노출로 Qt 를 통해 단일
qmlRegisterSingletonInstance("com.me.test", 1, 0, "MyClass", &myClass);
그밖에 없는 C++속성을 슬라이더의 프로그램입니다..
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
를 업데이트 프로그램입니다..그것은 슬라이더입니다. 하지만 주어진 그 myClass.myValue
제한된다 slider.value
. 나는 가정 모두에 값을 얻는 동시에 업데이트. 그러나 슬라이더를 드래그는 보여줍니다 그들은 다른 값입니다. 다음 그것이 무엇이 인쇄되는 콘솔에서 때 나는 끌어 내니다.
qml: value = 19.863013698630137
qml: myClass.myValue = 30
또한 setMyValue
지 않을 것 같다 호출되지 않는 한 명시적 할당이처 myClass.myValue = 0
. 도 바인딩은 구성 요소 없이 성공입니다. 왜 이런 경우와게 만들 수 있는 C++산 업데이트될 때마다 나는 슬라이더를 끌?
Qt:6.2.1
컴파일러:그램/gcc
운영 체제:윈도우/리눅스
업데이트:을 테스트하 반전 구속력이 있습니다. 여전히 동일한 결과 인쇄
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
?