2016-10-27 14 views
0

私はGridViewでswipeViewを持っています。モデル数に基づいてGridviewを動的に作成しています。 (各gridViewは最大6セルしか保持しません。 つまり、モデル数が7の場合は、最後のItemで2番目のgridViewを作成しています)。それは正常に動作しています。GridViewは動的にロードする前のデータを表示します

私が問題に直面しています: を2番目の項目にスクロールは、2番目のビューが第二のGridViewにロードされたデータまで同じ第1のビューの内容を示しているが、私は、2 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)

関連する問題