2014-03-05 2 views
2

QtQuick 1.0 (Qt 4.8) 응용 프로그램에서 다음 신호 처리기 코드가 있습니다. 값이 C++ 백엔드에 의해 제기 된 신호에서오고 참으로 문자열을 포함 qml 신호 처리기의 자동 유형 대화

Item { 
    property bool landscape: false 
    [...] 
    Connections { 
    [...] 
    onPpar: { 
     landscape = value; 
     [...] 
    } 
    } 
} 

... 중 하나를 'true'또는 'false'. 이것은 내 Qt4.8 응용 프로그램에서 잘 작동했지만 응용 프로그램을 Qt5.1 및 QtQuick 2.0으로 이식 할 때 bool 속성에 대한 형식 대화가 작동하지 않았습니다. 이제 나는

onPpar: { 
    landscape = (value == 'true'); 
} 

...과 같은 것을 써야합니다.

유형 대화가 JavaScript가 자동으로 수행하는 작업의 일부라고 생각 했습니까? 그리고 제가 말했듯이, 4.8까지는 명백한 대화 속임수없이 완벽하게 작동했습니다.

무엇이 여기에 있습니까?

답변

0

아마도 4.8의 선언 모듈에 버그 (또는 기능)가있을 수 있습니다. 모든 문자열 "true", "false"및 "trololo"는 부울 true로 평가되므로 Qt5는 적절한 동작을합니다. 비어 있지 않은 문자열은 true로 평가됩니다. 따라서 적절한 해결책은 신호 매개 변수를 string에서 bool로 변경하는 것입니다. 웬일인지 그것을 할 수 없다면 지금처럼

landscape = (value == 'true'); 

으로 작성해야합니다.