GridView动态加载显示以前的数据

时间:2016-10-27 07:46:00

标签: qt gridview qml swipeview

我有使用GridView的swipeView。我根据我的模型计数动态创建Gridview。 (每个gridView仅保存最大6个单元格。  即,如果模型计数为7,我将创建第二个gridView与最后一个项目)。它工作正常。

我遇到了一个问题: 如果我有两个gridViews,同时滚动到第二个项目,第二个视图显示相同的第一个视图内容,直到加载到第二个GridView的数据。 这是我的代码,我的代码中是否有任何问题?或者我该如何解决这个问题。

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

1 个答案:

答案 0 :(得分:0)

我认为,问题是,Math.ceil(count / 6)对于最多6个值是相同的。当值没有改变时,它不会触发更新。 尝试添加尽可能多的元素,因此值将增加1。 我相信,它会更新。

一个简短而肮脏的解决方法是程序化,首先将Repeater的模型设置为0,然后每次都返回原始值。
我没有在我当前的设备上安装QT,但我百分百肯定,这可行。

为此,您需要处理favoriteapp.onCountChanged - 处理程序中的信号,首先将模型设置为0,然后再设置回Math.ceil(count/6)