2013-05-08 1 views
2

В настоящее время у меня возникает странная проблема: я показываю изображения в списке. Как хорошая дополнительная вещь, я хочу также показать exif-данные изображений. Поэтому я придумал следующую конструкцию с использованием flipable компоненты:делает первый элемент в qml listview по-другому?

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

Так что все работает отлично: я могу пролистать мои изображения и переворачивать их, нажав на них.

Странная вещь, тем не менее, такова: Я переворачиваю одно изображение (например, index = 3), и я перехожу к следующему, пока изображение 3 все еще переворачивается. Когда вы переключаетесь на изображение 3, он больше не переворачивается. Я предполагаю, что это понятно, так как булевский флип все время установлен на false. Мне нравится эта особенность!

НО это не работает для первого изображения (индекс 0). Зачем?

ответ

5

Делегаты не перемещаются, когда их не видят, потому что они уничтожены и воссозданы, когда они возвращаются в поле зрения.

Первый элемент - currentIndex и не уничтожается, когда он выставляется за пределы представления, потому что currentItem не должен быть уничтожен.

Если вы не заинтересованы в использовании currentIndex/currentItem, тогда вы можете просто установить currentIndex: -1, и он должен работать по вашему желанию.

Как предупреждение: QtQuick 2.0 не может уничтожать делегатов, когда они выходят из поля зрения, поскольку по умолчанию он имеет ненулевой cacheBuffer.

+0

спасибо большое: легко и быстро исправить! – Donny