2013-07-30 4 views
0

QML에서 사용자 정의 속성을 만들 수있는 방법이 있습니까? 예를 들어, 뭔가 같은 :QML - 필수 사용자 정의 속성

property required int numRows 

I은 ​​구성 요소가 없이는 작동하지 않기 때문에 구성 요소의 사용자가 특정 속성을 전달하는 시행합니다.

+1

'Qt '방법은 구성 요소가'qWarning()'을 사용하여 경고를 표시하거나 표시하지 않거나 구성 요소 자체 내에 경고를 표시하는 것입니다. – user1095108

답변

2

아니요, 할 수 없습니다. 가장 강력한 방법은 속성에 유효한 기본값을 지정하는 것입니다.

해결 방법이 잘못된 값을 제공 할 수있다 (예 : -1)과 항목의 Component.onCompleted 슬롯에 값을 확인하고 속성이 유효하지 않습니다 경우 CONSOLE.LOG을 보여 ...

하지만, 첫 번째 방법을 선호합니다. 구성 요소는 재사용 성 목표를 위해 항상 기본값으로 사용할 수 있어야합니다!

0

Qt 트롤은 Component.onCompleted가 대부분의 작업을 수행하는 선호되는 방법이 아니라 구현해야하는 해킹이라고 스스로에게 이야기했습니다.

MyItem{ 
    property int myvalue: -1 
    enabled: myvalue != -1 // Use other number if neccesary 
} 

이 상호 작용 요소를 가능하게 작동,하지만 더 흥미로운 물건처럼 만들 수 있습니다 :

가장 좋은 수는 선언적 스타일 블러를 사용하는 것입니다,이 같은 일이 이상적 일 것이다

MyItem{ 
    property int myvalue: -1 
    onMyvalueChanged:{ 
     enabled = true 
     callMyInitFunction(something) 
    } 
} 

사용자가 값을 변경하면 트리거되어 다른 함수 나 이니셜 라이저를 호출 할 수 있습니다. init을 한 번만 실행하려면 비활성화되어 있는지 확인하십시오.

MyItem{ 
    property int myvalue: -1 
    onMyvalueChanged:{ 
     if (!enabled){ 
     enabled = true 
     callMyInitFunction(something) 
     return 
     } 
     // Stuff to do of already initialized 
     callOtherStuff(otherThing) 
    } 
} 

마지막으로, 당신이 쓴 단어를 읽고 당신이 대신 개체에 대한 자바 스크립트 함수를 작성하고 호출 할 수 것 같다 "특정 속성을 전달합니다."

MyItem{ 
property int _myprop: 0 
function launch(param1, param2, param3){ 
    _myprop = param3 
    // do stuff 
    } 
} 

그런 다음 재사용 가능한 Dialog에서 사용할 수있는 대화 상자를 만들 때 대신 실행하면됩니다. 사용 사례에 따라 다릅니다.

물론 필요한 것을 따라 여러 가지 방법이 있습니다.