2016-10-27 14 views
0

나는 GridView로 swipeView를 가지고 있습니다. 내 모델 수를 기반으로 Gridview를 동적으로 생성합니다. (각 gridView는 maximun 6 셀만 보유합니다 .즉, 모델 수가 7 인 경우 마지막 항목과 함께 두 번째 gridView가 생성됩니다). 잘 작동합니다.동적으로로드하는 GridView는 이전 데이터를 표시합니다.

나는 문제에 직면하고있다 : 를 두 번째 항목에 스크롤, 두 번째보기는 두 번째의 GridView에로드 된 데이터까지 같은 첫 번째보기의 내용을 표시하는 동안 나는이 개있는 GridViews이있는 경우. 내 코드는 무엇입니까? 내 코드에 문제가 있습니까? 또는 어떻게 문제를 해결할 수 있습니까?

SwipeView { 
       id: home_Swipe 
       width: 1280 
       height: 542 
       x:145 
       y:0 
    // favouriteapp is model Id 
       Repeater{ 
        model:Math.ceil(favouriteapp.count /6) 
        Component { 

         id: contactDelegate 
         QuadTiles{ 
          id: gridItem 
          btn1_icon.source:favouriteapp.get(nIndex).icon1 
          btn3_icon.source:favouriteapp.get(nIndex).icon2 

          Connections{ 
           target:gridItem 
           // Selected 1st button from the grid 
           onGridButton1Pressed:{ 
           favouriteapp.setProperty(selectedItemIndex,"isLoaded",true) 

           } 
          } 


         } 

        }//Component 

        GridView{ 
         id: grid 
         x: 0 
         y: 20 
         width: 1280 
         height: 542 
         interactive: false 

         cellWidth: 360 
         cellHeight:240 

         model: utilObj.getPageGridCount(favouriteapp.count,home_Swipe.currentIndex) 
         delegate:contactDelegate 

        } 


       } // Repeater 



      }// SwipeView 

답변

0

문제는, 내가 생각 Math.ceil(count/6) 최대 6 개 값에 대해 동일한 지입니다. 값이 변경되지 않으면 업데이트를 트리거하지 않습니다. 많은 요소를 추가하려고하므로 값이 1 씩 증가합니다. 확실합니다. 그러면 업데이트됩니다.

짧고 더러운 해결 방법은 절차 적으로 진행하는 것입니다. 먼저 Repeater의 모델을 0으로 설정 한 다음 매번 원래 값으로 다시 설정하십시오.
현재 장치에 QT가 설치되어 있지 않지만 100 % 확신합니다. 정상적으로 작동합니다.

이 작업을 수행하려면 0으로 먼저 모델을 설정 -handler favoriteapp.onCountChanged의 신호를 처리해야하고, Math.ceil(count/6)

에 그 뒤로 후