2012-10-19 4 views
3

이것은 모든 언어에서 가장 실망스러운 행동이지만 QML로 수행하는 방법에 익숙하지 않습니다.라벨 텍스트를 동적으로 변경합니다. QML

QML에서 레이블의 텍스트 값을 변경하는 방법은 무엇입니까? 내가 놓친 거지 ..

내 코드는 다음과 같다 : 나는 왜 작동하지 모르겠어요

Container { 
    objectName: "formContainer" 
    id: formContainer 

    property alias text1: labelTest.text 

    onCreationCompleted: { 
     Qt.labelTest = labelTest; 
     Qt.text1 = formContainer.text1; 
    } 

    Label { 
     id: labelTest 
     text: "test" 
    } 

    TextField { 
     id: textFieldPass 
     onFocusedChanged: { 
      if (focused) { 
        Qt.myFunction(); 
      } 
     } 
    } 

    function myFunction(){ 
     //Enter successfuly to the function 
     console.log("Qt.labelTest.text:" + Qt.labelTest.text); //Output: undefined 
     Qt.labelTest.text = "Y U NO change!"; //Does nothing 
     Qt.text1 = "Y U NO change!";   //Does nothing 
    } 
} 

. 별칭 속성을 사용하더라도 텍스트는 변경되지 않습니다. 나는 어떤 도움을 주셔서 감사합니다.

감사합니다.

답변

6

컨트롤의 id.aliasname을 사용하여 별칭에 액세스해야합니다. 루트 (이 경우, 즉 페이지)에 선언하여 글로벌 & 메이크업의 myFunction이, 그것은 다음과 같은 여러 슬롯에 사용하는 경우 :

Page { 
function myFunction() { 
    formContainer.text1 = "Y U NO change!"; 
} 
Container { 
    id: formContainer 
    property alias text1: labelTest.text 
    Label { 
     id: labelTest 
     text: "test" 
    } 
    TextField { 
     id: textFieldPass 
     onFocusedChanged: { 
      if (focused) { 
       myFunction(); 
      } 
     } 
    } 
    } 
} 

를하거나 경우에만 텍스트 필드 제어에 사용되는, 당신은 할 수 있습니다 그것은 그것을 위해 로컬이 같은 :

Page { 
Container { 
    id: formContainer 
    property alias text1: labelTest.text 
    Label { 
     id: labelTest 
     text: "test" 
    } 
    TextField { 
     id: textFieldPass 
     onFocusedChanged: { 
      if (focused) { 
       myFunction(); 
      } 
     } 
     function myFunction() { 
      formContainer.text1 = "Y U NO change!"; 
     } 
    } 
} 
} 

희망이 도움이됩니다.

2

QML 개체의 속성을 변경하는 데 Qt'' something '을 사용할 필요는 없습니다. 속성을 변경하는 방법은 'objectId'. 'property'= "value";입니다. 그러므로 다음을 시도해보십시오 :

Container { 
    objectName: "formContainer" 
    id: formContainer 

    Label { 
    id: labelTest 
    text: "test" 
    } 

    TextField { 
    id: textFieldPass 
    onFocusedChanged: { 
     if (focused) { 
     myFunction(); 
     } 
    } 
    } 

    function myFunction(){ 
    //Enter successfuly to the function 
    console.log("labelTest.text:" + labelTest.text); 
    labelTest.text = "Y U NO change!"; //Does nothing 
    } 
} 
관련 문제