2014-03-13 2 views
0

다른 구성 요소에서 사용하기 위해 QML에서 일반 버튼을 정의하려고합니다. 객체에 대해 onCLick 메소드를 호출하고 해당 ID를 함수에 전달해야합니다. id 부분을 제외한 모든 것이 작동합니다.QML의 객체 id에 대한 참조

버튼은 다음 코드로 정의된다

:

Rectangle { 
    width: 100 
    height: 20 
    color: "#d1d7f5" 
    radius: 10 
    property string btnText 

    MouseArea { 
     anchors.fill: parent 
     onPressed: parent.color = "#645fa9" 
     onReleased: parent.color = "#d1d7f5" 
     onClicked: { 
      context.onClicked(this.id) /// This is the line of problem 
     } 
    } 
    border.color: "#645fa9" 
    border.width: 2 

    Text { 
     id: textBtn 
     anchors.horizontalCenter: parent.horizontalCenter 
     anchors.verticalCenter: parent.verticalCenter 
     color: "#2e3b7f" 
     text: parent.btnText 
     font.bold: true 
     font.family: "Verdana" 
     font.pixelSize: 30 
    } 

} 

버튼은이 같은 다른 QML 파일에 사용할 수 있습니다

Button { 
    id: button1 
    x: 141 
    y: 30 
    btnText: "A Button" 

} 

파이썬 내가 신호를 수신하는 데 사용은 여기 :

class Context(QObject): 

    @Slot(object) 
    def onClicked(self, btn): 
     print btn 

버튼을 클릭하면 None이 인쇄됩니다. this.id이 문자열로 대체되면 문자열을 인쇄합니다. 또한 Rectangleid 속성을 부여하려고 시도했지만 작동하지 않았습니다.

답변

1

ID 필드를 가져올 방법이 없다고 생각합니다. 버튼을 구별하기 위해 추가 속성을 추가하거나 btnText를 사용할 수 있습니다.

+0

이것은 내가 생각해 낸 해결책이었습니다. jus는 더 똑똑한 무엇인가를 바랐습니다. – CodeTower