delegates - qml ListView 中的第一个元素的行为是否不同?

标签 delegates qml

我目前面临一个奇怪的问题:我在 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/

相关文章:

qt - 如何在 QML 中查询键盘修饰符?

c# - 具有相同签名的委托(delegate)

c# - 委托(delegate)参数中的 Co(ntra) 方差

c# - 将 C# 委托(delegate)声明放在它自己的文件中的什么位置?

qt - Row 元素内子元素的 FocusScope 和 "focus"属性

c++ - 如何找出 QQuickItem 派生类对象何时初始化?

c# - 为一个事件查询一名委托(delegate)两次

ios - 通过委托(delegate)将数据传递给 UITableView

qt - qml 无框窗口的阴影

c++ - 将 C++ LineSeries 传递给 QML 图表