我有使用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
答案 0 :(得分:0)
我认为,问题是,Math.ceil(count / 6)
对于最多6个值是相同的。当值没有改变时,它不会触发更新。
尝试添加尽可能多的元素,因此值将增加1。
我相信,它会更新。
一个简短而肮脏的解决方法是程序化,首先将Repeater
的模型设置为0,然后每次都返回原始值。
我没有在我当前的设备上安装QT,但我百分百肯定,这可行。
为此,您需要处理favoriteapp.onCountChanged
- 处理程序中的信号,首先将模型设置为0,然后再设置回Math.ceil(count/6)