2014-06-13 5 views
0

qml에 listview를 사용하여 축소 가능한 패널을 만들고로드를 동적으로 제어합니다.qml listview의 구성 요소가 삭제되었습니다.

property Component textBoxComponent; 
property Component comboBoxComponent; 
property Component twoStateBoxComponent; 
property Component sliderComponent; 

Component.onCompleted: { 
    textBoxComponent = Qt.createComponent("MyTextBox.qml") 
    comboBoxComponent = Qt.createComponent("MyCombobox.qml") 
    twoStateBoxComponent = Qt.createComponent("CheckBoxSwitcher.qml") 
    sliderComponent = Qt.createComponent("MySlider.qml") 
} 

이 구성 요소는 다음과 같이리스트 뷰 대리인에서 사용된다

componentContainer.sourceComponent = comboBoxComponent 
componentContainer.item.comboItems = displayValues 
componentContainer.item.parameterName = settingName 
componentContainer.item.width = ScriptStyles.parameterControlWidth 

이 코드는 함수 "Component.onCompleted"을 실행. 여기서 "componentContainer"는 "Loader"요소입니다. ListView를 숨길 때까지 모든 것이 잘 작동합니다 (높이와 불투명도를 0으로 변경합니다. 또한 0.05 값을 설정하려고 시도했습니다). 이와 같이 :

states: [ 
     State { 
      name: "collapsed" 
      PropertyChanges { 
       target: listView 
       height: 0 
       opacity: 0 
      } 
] 

일부 컨트롤을 확장 한 후에는 축소 전과 같이 유지되고 일부는 다시 작성됩니다 (축소 중 축소 실행). 어떻게 대상물이 파괴되는 것을 막을 수 있습니까?

+0

자신 만의 질문에 답해야합니다 (또는 삭제하십시오). – Mitch

답변

0

해결책을 찾았습니다. ListView 요소에는 대리자가 뷰의 보이는 영역 외부에 유지되는지 여부를 결정하는 속성 cacheBuffer이 있습니다.

관련 문제