Qt
+ QML
에서 나는 Q_PROPERTY
을 많이 사용하고 있습니다. NOTIFY
신호는 값을 재평가하기에 좋습니다.Q_PROPERTY를 한 번만 평가하는 방법
class SomeComponent: public QObject
{
public:
const QString& GetMyValue(void) const;
void SetMyValue(const QString &value);
Q_PROPERTY(QString myValue READ GetMyValue WRITE SetMyValue NOTIFY myValueChanged)
signals:
void valueChanged();
}
Text {
text: myComponent.myValue
}
내가 이제는 값을 한 번만 가져오고 QML에서 업데이트하지 못하게하려는 시나리오가 있습니다.
예 : 사용자가 이전 값을 알 수있게하면서 변경할 수 있기를 원합니다.
TextInput {
text: myComponent.myValue
onAccepted:{
myComponent.myValue = text
}
}
Text {
text: "OldValue: " + myComponent.myValue
}
이제 TextInput을 입력하고 Enter 키를 누르면 Text 요소의 텍스트도 업데이트됩니다. 이 문제를 어떻게 방지 할 수 있습니까?
속성에서 연결을 끊을 수 있습니까?
GetMyValue
및 SetMyValue
을 Q_INVOKABLE
으로 변경하는 유일한 방법은 무엇입니까?
QML에 이전 값이 표시되기를 원하지만 C++ 모델에 이전 값 또는 새 값을 저장 하시겠습니까? – user2436719
항상 새로운 가치를 지니기 위해 C++ 모델을 갖고 싶습니다. QML에서만, 텍스트 요소가 생성되었을 때 텍스트에 myValue의 값을 갖도록 내 예제에서보고 싶은 값을 결정할 수 있기를 원합니다. 예를 들어 이것은 Q_INVOKABLE을 통해 이루어질 수 있습니다. 다른 방법이 있는지 알고 싶습니다. – RvdK
"f 이제 TextInput을 입력하면 Text 요소의 텍스트도 업데이트됩니다."- 확실합니까? 왜냐하면 그렇게해서는 안됩니다. 코드에 한 방향 바인딩이 있습니다. myValue를 변경하면 TextInput의 텍스트가 변경되지만 TextInput을 변경하면 myValue가 변경되지 않습니다. – dtech