2017-05-16 9 views
1

현재 VS2015, Windows 10 64 비트에서 Qt 5.8.0 64 비트를 사용하고 있습니다. 문서에 따르면 Connections 유형은 5.7.0부터 enabled으로 새 속성을 얻었습니다. 문서의 내용 :Qt QML : 연결이 가능한 속성의 정확한 의미는 무엇입니까

이 속성은 항목에서 변경 이벤트를 허용하는지 여부를 유지합니다.

이 속성은 연결이 유효한지 여부를 제어합니다. 맞습니까? 그러나이 속성을 끄면 연결이 계속 작동합니다! 데모 코드는 다음과 같습니다.

import QtQuick 2.7 
import QtQuick.Controls 2.0 
import QtQuick.Layouts 1.0 

ApplicationWindow { 
    visible: true 
    width: 640 
    height: 480 
    title: qsTr("Hello World") 

    Button{ 
     id: button 
     anchors.centerIn: parent 
     width: 100 
     height: 50 
     text: "Click!" 
    } 

    Connections{ 
     target: button 
     enabled: false 
     onClicked:{ 
      console.log("button Clicked!"); 
     } 
    } 
} 

"버튼 클릭!" 디버그 출력에서 ​​여전히 실행 중입니다! "enabled"속성의 정확한 의미는 무엇입니까?

PS : 그것이 내가 참으로 "사용 가능"으로 설정하면 (기본 값도 마찬가지입니다) 밝혀, 그리고 Component.onCompleted을 끌은 연결이 무효가 및 디버그 콘솔은 버튼을 클릭 "인쇄되지 않습니다! " 더 이상 버튼을 클릭 할 때 :

ApplicationWindow { 
    visible: true 
    width: 640 
    height: 480 
    title: qsTr("Hello World") 

    Button{ 
     id: button 
     anchors.centerIn: parent 
     width: 100 
     height: 50 
     text: "Click!" 
    } 

    Connections{ 
     id: connections 
     target: button 
     enabled: true 
     onClicked:{ 
      console.log("button Clicked!"); 
     } 
    } 
    Component.onCompleted: connections.enabled = false; 
} 

버그입니까?

+0

설명 된 동작을 통해 버그 인 것 같습니다. 타겟을 'null'으로 설정하여 'Connections'을 비활성화 할 수 있으므로이 기능을 사용하지 않았습니다. – derM

+1

그래, 내가 말한대로 연결을 제어하는 ​​데 사용. 그러나 작동하는 경우 "작동 가능"은 목표를 '널 (null)'로 설정하는 것보다 훨씬 의미 있고 스스로 설명됩니다. –

답변

2

예, 버그가 발생하여 enabled 속성의 초기 값이 무시됩니다. Connections 항목을 완전히 초기화 한 후에 값을 변경하면 enabled 만 고려됩니다. 따라서 귀하의 Component.onCompleted 트릭은 좋은 해결 방법입니다.

https://codereview.qt-project.org/#/c/194840/에서 문제가 해결되었습니다.