나는 이것에 대해 주위를 돌고 있습니다. 신호와 슬롯 주변에서 머리를 감쌀 수 없습니다.캐스케이드 및 신호/슬롯
내 C++의 신호가 발생할 때 자동으로 UI를 업데이트 할 수있는 메커니즘을 찾고 있습니다.
예 :
나는 두 개의 텍스트가 QML에서 라벨이 : 값을 반환 _app.method을.
나는 onClicked가 Q_INVOKABLE 메소드를 실행하는 버튼이 있습니다. 이 메소드는 완료되면 신호를 내 보냅니다. 예를 들어, geocordinates를 가져오고 위 텍스트 : 할당이 의존하는 값을 업데이트합니다.
내가 원하는 것은 그 값이 변경되면 텍스트 : 할당을 업데이트하는 것입니다.
이 신호/슬롯을 분명하게 설명하면됩니다. 문서의 유일한 예는 QML 또는 C++만으로 간주되지만 둘 다 혼합하지는 않습니다. 샘플 코드에는 예제가 있지만 설명서에는 구체적으로 설명되어 있지 않습니다.
평이한 설명이있는 경우 적응할 수 있는지 확인하십시오. 예를 들어, 1 : QML에서 이것을 정의합니다. 2 : hpp 파일에서 이것을 정의합니다. 3 : cpp 파일에서 이것을 정의합니다.
QObject의 setPropery ("text", "value")를 사용해 보았지만 시도 할 때 내 응용 프로그램이 충돌합니다.
내가 틀렸다면 말해 ...
1) QML에서 :
Button {
id: aButton
text: _app.value
onClicked: {
_app.valueChanged.connect(aButton.onValueChanged);
_app.value = _app.value + 1;
}
function onValueChanged (val) {
aButton.text = "New value: " + val;
}
}
2) HPP의 :
Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged)
public:
int value();
void setValue(int i);
signals:
void valueChanged(int);
private:
int m_iValue;
3) CPP의 :
int class::value()
{
return m_iValue;
}
void class::setValue(int i)
{
// name is same as HPP WRITE Q_PROPERTY statement
m_iValue = i;
emit valueChanged(m_iValue);
}
QML에서 onClick 메서드 인 CONNECT QML 기능을 가진 신호; 즉, 이제 우리는 가치 변화를 듣고 있으며, 그렇게되면 그 기능이 호출됩니다. 그런 다음 값을 변경합니다 ... Q_PROPERTY가 쓰기 값을 setValue라는 함수로 설정했기 때문에 setValue가 새 값으로 호출됩니다. 내부적으로 m_iValue가 변경되고 emit이 발생하면 valueChanged를 청취중인 사람에게 새로운 값이 있음을 알려줍니다.
안녕하세요, 제 QML이 듣고 있습니다! (_app.valueChanged.connect 스크립트를 통해). 그래서 QML 객체 (Button)는 그것을 듣고 있었고, valueChanged (m_iValue)를 방출했기 때문에 새로운 값으로 onValueChanged 함수가 호출되었습니다.
제게 말해 주셨습니까? !?!
와우 ... 시그널/슬롯 매그 니 덕분에 어떻게 든 작동합니다. 이 특수 효과를 만드는 특수 키워드가 있습니까? –
아는 바가 없습니다. –