2013-05-08 75 views
2

我目前正面临一个奇怪的问题:我在列表视图中显示图像。作为一个很好的附加功能,我还想显示图像的exif数据。 因此,我想出了使用flipable组件的以下建筑:在qml listview中的第一个元素的行为有什么不同?

Component{ 
    id: flippableDelegate{ 
    Flipable{ 
     property bool flipped: false 
     front: Images{} 
     back: ExifData{} 
    } 
} 
ListView{ 
    delegate: flippableDelegate 
} 

所以一切工作正常:我可以通过我的图片滚动,通过点击它们翻转。

然而,奇怪的是: 我翻转一个图像(例如索引= 3),并且当图像3仍然翻转时,我滑动到下一个图像。当弹回到图像3时,它不再翻转。 我想这很清楚,因为布尔翻转始终设置为false。 我喜欢这个功能!

但它不适用于第一个图像(索引0)。为什么?

回答

5

委托在从视图中弹出时不会翻转,因为它们在重新放入视图时被销毁并重新创建。

第一个项目是currentIndex,因为currentItem一定不能被销毁,所以当它在视图之外轻弹时不会被销毁。

如果您对使用currentIndex/currentItem不感兴趣,那么您可以简单地设置currentIndex: -1,它应该按照您的意愿工作。

作为警告的一句话:QtQuick 2.0可能不会销毁代理,因为它们的默认值为非零cacheBuffer

+0

非常感谢:简单快速修复! – Donny 2013-05-08 12:10:09

相关问题