QML-тип PagedView
Страничный просмотр элемента. Подробнее…
Строка импорта: | import Sailfish.Silica 1.0 |
Наследуется от: | SilicaControl |
Свойства
- cacheSize : int
- contentItem : Item
- count : int
- currentIndex : int
- currentItem : string
- delegate : Component
- direction : enum
- dragThreshold : int
- dragging : bool
- horizontalAlignment : enum
- horizontalSpacing : real
- interactive : bool
- model : variant
- moveDragThreshold : bool
- moveDuration : int
- moving : bool
- verticalAlignment : enum
- verticalSpacing : real
- wrapMode : enum
Прикрепляемые свойства
- contentHeight : real
- contentWidth : real
- view : PagedView
Методы
- void moveTo(int index, PagedView::Transition transition)
Подробное описание
Тип PagedView
обеспечивает страничный просмотр элемента. Он отображает по одному элементу за раз
из набора элементов, созданных из данных model и внешнего вида delegate.
Жест перетаскивания вдоль оси direction интерактивного контейнера переместит соседний элемент в контейнер и сделает его текущим, если элемент был перетащен и отпущен дальше, чем moveDragThreshold. Перелистывание контейнера по той же оси может вызвать изменение элемента без необходимости перетаскивать его так далеко.
Базовый вариант использования просмотра страницы — это слайд-шоу изображений:
import Sailfish.Silica 1.0
PagedView {
model: ListModel {
ListElement { url: "image1.jpg" }
ListElement { url: "image2.jpg" }
ListElement { url: "image3.jpg" }
ListElement { url: "image4.jpg" }
}
delegate: Image {
width: PagedView.contentWidth
height: PagedView.contentHeight
source: model.url
fillMode: Image.PreserveAspectFit
}
}
Примечание. Этот тип находится в стадии разработки и может быть изменён.
Описание свойств
cacheSize : int
Количество элементов, окружающих текущий элемент, включая его, которые будут асинхронно созданы заранее и кэшированы.
Заполнение кеша может улучшить отзывчивость интерфейса при переходе между элементами, поскольку следующий элемент в контейнере обычно доступен и готов к немедленному отображению.
Размер по умолчанию, равный 5 элементам, сделает несколько элементов доступными по обе стороны от текущего элемента.
[read-only] contentItem : Item
Родительский элемент для элементов страницы, созданных в контейнере.
По умолчанию этот элемент заполняет контейнер, но у него можно изменить размер и положение, чтобы ввести поля в интерактивной области контейнера. Это можно использовать, например, для создания пространства для заголовка в верхней части контейнера, где горизонтальные перетаскивания для переключения страниц всё ещё распознаются.
[read-only] count : int
Количество элементов в контейнере.
currentIndex : int
Индекс элемента в модели, который должен отображаться в контейнере.
По умолчанию изменение текущего элемента анимировано. Чтобы изменить текущий индекс без анимации, следует вызвать метод
moveTo() с аргументом PagedView.Immediate
.
[read-only] currentItem : string
Текущий видимый элемент в контейнере.
Текущий элемент можно изменить через свойство currentIndex или вызвав метод moveTo(). Если контейнер анимируется при изменении текущего индекса, может быть задержка в обновлении текущего элемента.
delegate : Component
Делегат Item, из которого будет построена страница в контейнере на основе элемента в исходной модели model.
direction : enum
Направление, в котором элементы располагаются в контейнере. Оно определяет, с какой стороны появляются элементы для перехода, соседний элемент, который можно перетащить с помощью жеста, и ось для жестов перетаскивания.
Возможные значения:
-
PagedView.LeftToRight
— элементы с меньшими индексами располагаются слева от текущего элемента, а элементы с большими индексами — справа.Это значение по умолчанию.
-
PagedView.RightToLeft
— элементы с меньшими индексами располагаются справа от текущего элемента, а элементы с большими индексами — слева. -
PagedView.TopToBottom
— элементы с меньшими индексами располагаются сверху от текущего элемента, а элементы с большими индексами — снизу. -
PagedView.BottomToTop
— элементы с меньшими индексами располагаются снизу от текущего элемента, а элементы с большими индексами — сверху.
dragThreshold : int
Минимальное расстояние от места нажатия до точки в контейнере, до которой необходимо перетащить элемент, чтобы контейнер начал перетаскивание.
Когда контейнер начинает перемещение, он захватывает жесты перетаскивания у дочерних элементов, поэтому важно, чтобы этот порог был не меньше порога любых дочерних элементов, которые также распознают жесты перетаскивания на той же оси. Точно так же родительский элемент с меньшим порогом перетаскивания может перехватить жесты, которые логически принадлежали этому контейнеру. Стоит рассмотреть возможность увеличения этого значения выше значения по умолчанию Theme::startDragDistance, только если известно, что контейнер не имеет элементов-предков, которые также распознают жесты перетаскивания.
[read-only] dragging : bool
Перемещается ли текущий элемент с помощью жеста перетаскивания.
horizontalAlignment : enum
Горизонтальное выравнивание элементов относительно contentItem контейнера. Выровненное положение перемещаемых по горизонтали элементов будет смещено на величину перетаскивания.
Возможные значения: PagedView.AlignLeft
, PagedView.AlignHCenter
и PagedView.AlignRight
. По умолчанию элементы
выравниваются по центру.
horizontalSpacing : real
Расстояние по горизонтали между соседними элементами в контейнере.
interactive : bool
Может ли пользователь переключаться между элементами в контейнере путем перетаскивания. Если значение равно true
(по
умолчанию), перетаскивание в контейнере приведёт к появлению смежного элемента, а если false
, перетаскивание ничего
не даст.
model : variant
Модель, содержащая данные элементов для отображения в представлении.
Как и в случае с другими контейнерами для элементов, это может быть реализация C++ QAbstractItemModel
,
ListModel,
DelegateModel,
ObjectModel, массив Javascript или число, обозначающее
количество элементов.
moveDragThreshold : bool
Минимальное расстояние, на которое элемент в контейнере должен быть перетащен из своего стационарного положения, чтобы он мог быть заменён в качестве текущего элемента на соседний, когда перетаскивание закончено.
moveDuration : int
Продолжительность анимации перемещения страницы.
Изменения страницы, вызванные тапом, могут завершиться за меньшее время.
[read-only] moving : bool
Перемещается ли текущий элемент с помощью жеста перетаскивания или анимации.
verticalAlignment : enum
Вертикальное выравнивание элементов относительно contentItem контейнера. Выровненное положение перемещаемых по вертикали элементов будет смещено на величину перетаскивания.
Возможные значения: PagedView.AlignTop
, PagedView.AlignVCenter
и PagedView.AlignBottom
. По умолчанию элементы
выравниваются по центру.
verticalSpacing : real
Расстояние по вертикали между соседними элементами в контейнере.
wrapMode : enum
Определяет, будет ли навигация по контейнеру охватывать конечные элементы.
Возможные значения:
-
PagedView.NoWrap
— навигация остановлена на обоих концах. Невозможно вытянуть элемент перед первым в модели или после последнего в контейнере. -
PagedView.WrapBegin
— навигация асимметрична и включает перемещение от первого элемента к последнему, но не от последнего к первому. -
PagedView.WrapEnd
— навигация асимметрична и включает перемещение от последнего элемента к первому, но не от первого к последнему. -
PagedView.Wrap
— навигация имеется на обоих концах. От последнего элемента можно перейти к первому и наоборот.Это значение по умолчанию.
Описание прикрепляемых свойств
PagedView.contentHeight : real
Высота contentItem страничного контейнера, которому принадлежит элемент.
PagedView.contentWidth : real
Ширина contentItem страничного контейнера, которому принадлежит элемент.
PagedView.view : PagedView
Страничный контейнер, которому принадлежит элемент.
Описание методов
void moveTo(int index, PagedView::Transition transition)
Изменяет текущий индекс представления на index.
Если transition имеет значение PagedView.Animated
, замена текущего элемента будет анимирована. Если оно имеет
значение PagedView.Immediate, текущий элемент будет заменён без перехода, и любая текущая анимация будет прервана.