2016-09-27 6 views
1

이 질문에어떻게 1.1

그래서 내가이 때문에 3 개 항목 (이미지 또는 사각형 등)과 구성 요소를 만든 QtQuick 1.1, QML, GUI 생성에 관한됩니다 QtQuick의 구성 요소를로드 한 후 항목을 삭제하는 방법 내 응용 프로그램의 여러 화면에서 재사용됩니다.

하나의 특정 화면에는 2 개의 항목 만 있으면됩니다.

구성 요소를 가져온 후 해당 항목 하나를 삭제하는 방법.

아래의 코드는 개념을 이해하기위한 것입니다

//Mycomponent.qml 
Rectangle { 
    *code* 
    item { id: item1; *some code* } 
    item { id: item2; *some code* } 
    item { id: item3; *some code* }} 

내 화면 파일이 동일한 구성 요소를 재사용하고 바로 삭제하는 방법 그래서

//MyScreen.qml 
Rectangle { 
    MyComponent{ } 
    *some Code* 
    } 

될 것 같은 내 구성 요소입니다 그것에서 하나의 항목?

내 질문에 오류가있는 경우 수정하십시오.

감사합니다.

+0

그냥'item.visible = false'를 설정하고 싶습니까? 부울 속성 별칭을 구성 요소에 추가하고 항목의 표시 속성 인 – folibis

답변

3

대부분의 경우 개체의 가시성을 변경할 수 있습니다.

visible: false 

또는

opacity: 0 

는 예를 들어, 당신은 그것을 위해 별칭 속성을 추가 할 수 있습니다.

//Mycomponent.qml 
Rectangle { 
    id: myRect 
    property alias item1Visible: item1.visible 
    Item { id: item1; } 
    Item { id: item2; } 
    Item { id: item3; }} 

그럼 당신은 JS에

myRect.item1Visible = false 

을 할 수 있습니다.

dynamicaly created 개체를 삭제할 수 있습니다.

rect.destroy(); 

정적으로 생성 된 개체는 일반적으로 삭제할 수 있지만 일반적으로 바람직하지 않습니다.

+0

중 하나에 연결하면됩니다. 그래서 변경할 가능성이있는 항목에 대한 속성을 설정하고 해당 항목에 대해 보이는 거짓을 설정하는 것을 의미합니다 ... 감사합니다 –

2

개별 항목을 더 작은 구성 요소로 더 나누고 그 위에 더 큰 구성 요소를 만드는 것이 좋습니다. 필요할 때마다 더 작은 조각을 결합 할 수 있기 때문에 미래의 구성 요소에서도 재사용 성이 향상 될 것입니다.뭔가 같은 :

//MyReusableOne.qml 
Item { 
    *code* 
} 

//MyReusableTwo.qml 
Item { 
    *code* 
} 

//MyReusableThree.qml 
Item { 
    *code* 
} 

//MyBiggerBlockOne.qml 
Rectangle { 
    MyReusableOne{ id: item1; } 
    MyReusableThree{ id: item2; } 
} 

//MyBiggerBlockTwo.qml 
Rectangle { 
    MyReusableTwo{ id: item3; } 
    MyReusableThree{ id: item4; } 
} 

012 3,516,

그리고는로 사용 :

//MyScreen.qml 
Rectangle { 
    MyBiggerBlockOne{ } 
    *some Code* 
    MyBiggerBlockTwo{ } 
    *some Code* 
    } 

그리고 당신은 당신이 기술 한 방법을 고집하는 경우, 하나 개의 엉터리 방법이 될 수있다 :

Item 
{ 
    property var inValidItems : ['item2'] 
    Component 
    { 
     id: item1 
     Rectangle { color: "red"; width: 100; height: 100 } 
    } 

    Component 
    { 
     id: item2 
     Rectangle { color: "green"; width: 100; height: 100 } 
    } 

    Component 
    { 
     id: item3 
     Rectangle { color: "yellow"; width: 100; height: 100 } 
    } 

    Loader { id: loader1; sourceComponent: item1; y : 0 } 
    Loader { id: loader2; sourceComponent: item2; y : 100} 
    Loader { id: loader3; sourceComponent: item3; y : 200} 

    Component.onCompleted: 
    { 
     if(inValidItems.indexOf('item1') >= 0) 
      loader1.sourceComponent = undefined 

     if(inValidItems.indexOf('item2') >= 0) 
      loader2.sourceComponent = undefined 

     if(inValidItems.indexOf('item3') >= 0) 
      loader3.sourceComponent = undefined 
    } 
} 

P.S. 코드는 설명을위한 것일뿐 구문상의 오류는 검사하지 않습니다. 당신이 아이디어를 얻기를 바랍니다.

+0

나는 완전히 처음으로 당신의 아이디어에 동의하지만, 나는 내 biggerblock 1에서 약 50 재사용 가능한 항목을 가지고 내 큰 50 블록 2. 그래서 내가 2 ~ 3 개 항목 만 제거하고 싶다면 더 좋습니다. 뭐라고 제안하나요? –

+0

@Konstantin의 답변이이 경우에 당신에게 더 좋을 것이라고 생각합니다. –