我目前面临一个奇怪的问题:我在 ListView 中显示图像。作为一个额外的好处,我还想显示图像的 exif 数据。 因此,我使用可翻转组件想出了以下结构:
Component{
id: flippableDelegate{
Flipable{
property bool flipped: false
front: Images{}
back: ExifData{}
}
}
ListView{
delegate: flippableDelegate
}
所以一切正常:我可以滚动浏览图像并通过单击它们来翻转它们。
但奇怪的是: 我翻转一张图像(例如索引 = 3),然后在图像 3 仍处于翻转状态时轻拂到下一张图像。当弹回图像 3 时,它不再翻转。 我想这很清楚,因为翻转的 bool 值始终设置为 false。 我确实喜欢这个功能!
但它不适用于第一个图像(索引 0)。为什么?
最佳答案
当从 View 中弹开时,委托(delegate)不会翻转,因为当弹回到 View 中时,它们会被销毁并重新创建。
第一个项目是 currentIndex
,当它在 View 之外滑动时不会被销毁,因为 currentItem
不得被销毁。
如果您对使用 currentIndex/currentItem 不感兴趣,那么您可以简单地设置 currentIndex: -1
,它应该按您的意愿工作。
警告:当委托(delegate)从 View 中弹出时,QtQuick 2.0 可能不会销毁委托(delegate),因为默认情况下它有一个非零的 cacheBuffer
。
关于delegates - qml ListView 中的第一个元素的行为是否不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16438637/