Container QML 类型
提供常见容器功能的基础抽象类型。 更多...
属性
- contentChildren : list<Item>
- contentData : list<QtObject>
- contentHeight : real
(自 QtQuick.Controls 2.5 (Qt 5.12) 开始)
- contentModel : model
- contentWidth : real
(自 QtQuick.Controls 2.5 (Qt 5.12) 开始)
- count : int
- currentIndex : int
- currentItem : Item
方法
- void addItem(Item item)
- void decrementCurrentIndex()
(自 QtQuick.Controls 2.1 (Qt 5.8) 开始)
- void incrementCurrentIndex()
(自 QtQuick.Controls 2.1 (Qt 5.8) 开始)
- void insertItem(int index, Item item)
- Item itemAt(int index)
- void moveItem(int from, int to)
- void removeItem(Item item)
(自 QtQuick.Controls 2.3 (Qt 5.10) 开始)
- void setCurrentIndex(int index)
- Item takeItem(int index)
(自 QtQuick.Controls 2.3 (Qt 5.10) 开始)
详细介绍
Container 是一种允许动态插入和删除项的类似容器的用户界面控件的基础类型。
使用 Container
通常,项目被静态声明为容器的子项,但也可能动态地添加、插入、移动和删除项目。可以使用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属性相互绑定,以保持同步。当用户与任一容器交互时,其当前索引的变化将自动传播到另一个容器。
注意,然而,在JavaScript中分配currentIndex
值将移除相应的绑定。为了保留绑定,请使用以下方法更改当前索引:
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这样的具体容器实现中指定项的大小。
也请参见容器控件。
属性文档
该属性包含内容子项列表。
该列表包含所有在QML中声明为容器子项的项目,以及使用addItem()和insertItem()方法动态添加或插入的项目。
注意:与contentData
不同,contentChildren
不包括非视觉的QML对象。当插入或移动项时,它将重新排序。
该属性包含内容数据列表。
该列表包含在QML中声明的容器子项的所有对象,以及分别使用addItem()和insertItem()方法动态添加或插入的项目。
注意:与contentChildren
不同,contentData
包括非视觉QML对象。在插入或移动项目时,它不会重新排序。
另请参阅:Item::data和contentChildren。
contentHeight : real |
该属性保存内容高度,用于计算容器的总隐式高度。
除非显式覆盖,否则内容高度将自动根据容器中项目的隐式高度计算。
该属性自QtQuick.Controls 2.5(Qt 5.12)引入。
另请参阅:contentWidth。
contentModel : model |
该属性保存项的内容模型。
内容模型用于可视化目的。它可以将作为模型分配给展示容器内容的项。
Container { id: container contentItem: ListView { model: container.contentModel } }
另请参阅:contentData和contentChildren。
contentWidth : real |
该属性保存内容宽度,用于计算容器的总隐式宽度。
除非显式覆盖,否则内容宽度将自动根据容器中项目的隐式宽度计算。
该属性自QtQuick.Controls 2.5(Qt 5.12)引入。
另请参阅:contentHeight。
count : int |
该属性保存项目数量。
currentIndex : int |
该属性保存当前项的索引。
另请参阅:currentItem和管理当前索引。
currentItem : Item |
该属性保存当前项。
另请参阅:currentIndex。
方法文档
void addItem(Item item) |
添加一个item。
|
递减容器的当前索引。
可以通过调用此方法修改当前索引,而不会断开现有的currentIndex
绑定。
该方法自QtQuick.Controls 2.1(Qt 5.8)引入。
另请参阅:currentIndex和管理当前索引。
|
递增容器的当前索引。
可以通过调用此方法修改当前索引,而不会断开现有的currentIndex
绑定。
该方法自QtQuick.Controls 2.1(Qt 5.8)引入。
另请参阅:currentIndex和管理当前索引。
|
移除并销毁指定的 item。
此方法自 QtQuick.Controls 2.3 (Qt 5.10) 引入。
void setCurrentIndex(int index) |
移除并返回 index 处的 item。
注意: item 的所有权转移给调用者。
此方法自 QtQuick.Controls 2.3 (Qt 5.10) 引入。
© 2024 The Qt Company Ltd. 本文档中的文档贡献包括各自的版权所有者的版权。本提供的文档是按照 Free Software Foundation 发布的 GNU Free Documentation License 版本 1.3 的条款许可的。Qt 和相应的标志是芬兰和/或世界各地的 The Qt Company Ltd. 的商标。所有其他商标均为其各自所有者的财产。