2013-09-22 3 views
4

:언제 Q_Property 알림 신호가 호출됩니까? 이것으로

Q_PROPERTY(QString datastring READ showdata() NOTIFY datastringChanged)

는 QML 측 datastring 속성에 새로운 것을 할당 할 때 신호를 발신하는 목적 datastringChanged 신호, 또는 C++ 측은 QML에게 통지해야 할 경우 발광을 위해 인 정보가 업데이트되면 showdata()을 다시 확인해야합니까?

답변

4

후자. WRITE 메서드가 없기 때문에 QML은 해당 속성을 설정할 수 없습니다 (즉, QML로만 읽음).

(그리고, nitpick하기 위해서는 ()하지 않고, 단지 READ showdata입니다.)

+0

내가 쓸 수 있도록 한 경우, 해당 건물이 QML 측에서 뭔가를 할당하는 경우 요소는 여전히'onDatastringChanged' 신호를 인식 QML해야합니까? 아니면 NOTIFY로 지정한 신호와 다른 신호입니까? – johnbakers

+1

예, 가능합니다. 'WRITE' 메서드 내에서 그 신호를 내보내는 것을 기억하면됩니다. 그럼 f.i. 값이 변경되면 모든 바인딩이 자동으로 재평가됩니다. QML에서 어떤 종류의 객체 생성이 가능하다면 QML에서 일반 onDatastringChanged 핸들러를 사용할 수 있습니다. 평범한 QObject 서브 클래스를 QML에 노출하는 경우'Connections' 요소를'onDatastringChanged' 핸들러와 함께 다시 사용할 수 있습니다. – peppe

+0

QML 쪽에서 속성을 정의하면 자동으로 "on"이 앞에 붙은 속성과 동일한 이름의 신호가 첨부됩니다. 그러나 C++ 측에 속성을 정의하는 경우 명명 규칙이 적용된 자동 신호가 없습니다. 맞습니까? Q_PROPERTY 매크로에서 지정한 신호의 이름을 따릅니다. 맞습니까? – johnbakers