Тип QML контейнера
Абстрактный базовый тип, предоставляющий общую функциональность для контейнеров. Подробнее...
| Заявление об импорте: | import QtQuick.Controls 2.1 |
| С момента: | Qt 5.7 |
| Наследует: | |
| Наследуется от: |
Свойства
- contentChildren : список<Элемент>
- contentData : список<Объект>
- contentHeight : вещественное число
- contentModel : модель
- contentWidth : вещественное число
- count : целое число
- currentIndex : целое число
- currentItem : Элемент
Методы
- void addItem(Элемент item)
- void decrementCurrentIndex()
- void incrementCurrentIndex()
- void insertItem(int index, Элемент item)
- Элемент itemAt(int index)
- void moveItem(int from, int to)
- void removeItem(Элемент item)
- void setCurrentIndex(int index)
- Элемент takeItem(int index)
Подробное описание
Контейнер — это базовый тип для элементов управления пользовательским интерфейсом, похожих на контейнеры, которые позволяют динамически вставлять и удалять элементы.
Использование контейнеров
Обычно элементы статически объявляются как дочерние элементы контейнера, но также возможно динамически добавлять, вставлять, перемещать и удалять элементы. Доступ к элементам в контейнере можно получить с помощью itemAt() или contentChildren.
У большинства контейнеров есть понятие «текущего» элемента. Текущий элемент задаётся свойством currentIndex и доступен через свойство только для чтения currentItem.
Следующий пример демонстрирует динамическое добавление элементов в TabBar, который является одним из конкретных воплощений контейнера.
Row {
TabBar {
id: tabBar
currentIndex: 0
width: parent.width - addButton.width
TabButton { text: "TabButton" }
}
Component {
id: tabButton
TabButton { text: "TabButton" }
}
Button {
id: addButton
text: "+"
flat: true
onClicked: {
tabBar.addItem(tabButton.createObject(tabBar))
console.log("added:", tabBar.itemAt(tabBar.count - 1))
}
}
} Управление текущим индексом
При использовании нескольких контейнеров, таких как TabBar и SwipeView, вместе, их свойства currentIndex можно связать друг с другом, чтобы поддерживать их синхронизацию. При взаимодействии пользователя с любым контейнером изменения текущего индекса автоматически распространяются на другой контейнер.
Обратите внимание, что присвоение currentIndex значения в JavaScript удаляет соответствующую привязку. Для сохранения привязок используйте следующие методы для изменения текущего индекса:
TabBar {
id: tabBar
currentIndex: swipeView.currentIndex
}
SwipeView {
id: swipeView
currentIndex: tabBar.currentIndex
}
Button {
text: qsTr("Home")
onClicked: swipeView.setCurrentIndex(0)
enabled: swipeView.currentIndex != 0
}
Button {
text: qsTr("Previous")
onClicked: swipeView.decrementCurrentIndex()
enabled: swipeView.currentIndex > 0
}
Button {
text: qsTr("Next")
onClicked: swipeView.incrementCurrentIndex()
enabled: swipeView.currentIndex < swipeView.count - 1
} Реализация контейнеров
Контейнер не предоставляет стандартной визуализации. Он используется для реализации таких контейнеров, как SwipeView и TabBar. При реализации пользовательского контейнера наиболее важной частью API является contentModel, который предоставляет содержащие элементы таким образом, что он может использоваться как модель делегата для представлений элементов и повторителей.
Container {
id: container
contentItem: ListView {
model: container.contentModel
snapMode: ListView.SnapOneItem
orientation: ListView.Horizontal
}
Text {
text: "Page 1"
width: container.width
height: container.height
}
Text {
text: "Page 2"
width: container.width
height: container.height
}
} Обратите внимание, как размеры элементов страниц задаются вручную. Это потому, что в примере используется обычный контейнер, который не делает никаких предположений о визуальном макете. Обычно не требуется задавать размеры элементов в конкретных реализациях контейнеров, таких как SwipeView и TabBar.
См. также Контейнеры элементов управления.
Документация по свойствам
contentChildren : список<Элемент>
Это свойство содержит список дочерних элементов содержимого.
Список содержит все элементы, которые были объявлены в QML как дочерние элементы контейнера, а также элементы, которые были динамически добавлены или вставлены с помощью методов addItem() и insertItem() соответственно.
Примечание: В отличие от contentData, contentChildren не включает невизуальные объекты QML. Он переупорядочивается при вставке или перемещении элементов.
См. также Item::children и contentData.
[по умолчанию] contentData : список<Объект>
Это свойство содержит список данных содержимого.
Список содержит все объекты, которые были объявлены в QML как дочерние элементы контейнера, а также элементы, которые были динамически добавлены или вставлены с помощью методов addItem() и insertItem() соответственно.
Примечание: В отличие от contentChildren, contentData включает невизуальные объекты QML. Он не переупорядочивается при вставке или перемещении элементов.
См. также Item::data и contentChildren.
[с QtQuick.Controls 2.5 (Qt 5.12)] contentHeight : вещественное число
Это свойство содержит высоту содержимого. Используется для вычисления общей неявной высоты контейнера.
Если не переопределено явно, высота содержимого вычисляется автоматически на основе неявной высоты элементов в контейнере.
Это свойство было введено в QtQuick.Controls 2.5 (Qt 5.12).
См. также contentWidth.
[только для чтения] contentModel : модель
Это свойство содержит модель содержимого элементов.
Модель содержимого предоставляется для целей визуализации. Её можно назначить в качестве модели элементу содержимого, представляющему содержимое контейнера.
Container {
id: container
contentItem: ListView {
model: container.contentModel
}
} См. также contentData и contentChildren.
[с QtQuick.Controls 2.5 (Qt 5.12)] contentWidth : вещественное число
Это свойство содержит ширину содержимого. Используется для вычисления общей неявной ширины контейнера.
Если не переопределено явно, ширина содержимого вычисляется автоматически на основе неявной ширины элементов в контейнере.
Это свойство было введено в QtQuick.Controls 2.5 (Qt 5.12).
См. также contentHeight.
[только для чтения] count : целое число
Это свойство содержит количество элементов.
currentIndex : целое число
Это свойство содержит индекс текущего элемента.
См. также currentItem и Управление текущим индексом.
[только для чтения] currentItem : Элемент
Это свойство содержит текущий элемент.
См. также currentIndex.
Документация по методам
void addItem(Элемент item)
Добавляет элемент item.
[since QtQuick.Controls 2.1 (Qt 5.8)] void decrementCurrentIndex()
Уменьшает текущий индекс контейнера.
Этот метод можно вызывать для изменения текущего индекса без разрыва существующих currentIndex связей.
Этот метод был введён в QtQuick.Controls 2.1 (Qt 5.8).
См. также currentIndex и Управление текущим индексом.
[since QtQuick.Controls 2.1 (Qt 5.8)] void incrementCurrentIndex()
Увеличивает текущий индекс контейнера.
Этот метод можно вызывать для изменения текущего индекса без разрыва существующих currentIndex связей.
Этот метод был введён в QtQuick.Controls 2.1 (Qt 5.8).
См. также currentIndex и Управление текущим индексом.
void insertItem(int index, Item item)
Вставляет item в позицию index.
Возвращает элемент в позиции index, или null если он не существует.
void moveItem(int from, int to)
Перемещает элемент из позиции from в позицию to.
[since QtQuick.Controls 2.3 (Qt 5.10)] void removeItem(Item item)
Удаляет и уничтожает указанный item.
Этот метод был введён в QtQuick.Controls 2.3 (Qt 5.10).
void setCurrentIndex(int index)
Устанавливает текущий индекс контейнера.
Этот метод можно вызывать для установки конкретного текущего индекса без разрыва существующих currentIndex связей.
См. также currentIndex и Управление текущим индексом.
[since QtQuick.Controls 2.3 (Qt 5.10)] Item takeItem(int index)
Удаляет и возвращает элемент в позиции index.
Примечание: Владение элементом передаётся вызывающей стороне.
Этот метод был введён в QtQuick.Controls 2.3 (Qt 5.10).
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qml-qtquick-controls2-container.html