菜单有两个主要用例:
- import QtQuick 2.9
- import QtQuick.Window 2.2
- import QtQuick.Controls 2.2
-
- Window {
- visible: true
- width: 640
- height: 480
- title: qsTr("Hello World")
-
- Button {
- id: fileButton
- text: "File"
- onClicked: menu.open()
-
- Menu {
- id: menu
- y: fileButton.height
-
- MenuItem {
- text: "New..."
- }
- MenuItem {
- text: "Open..."
- }
- MenuItem {
- text: "Save"
- }
- }
- }
- }
通常情况下,菜单项被静态地声明为菜单的子项,但Menu也提供API来动态地添加、插入、移动和删除项目。菜单中的项目可以使用 itemAt() 或 contentChildren 来访问。
尽管MenuItems最常与Menu一起使用,但它可以包含任何类型的项目。
参见自定义菜单、菜单控件和弹出式控件。
[default] contentData : list
这个属性持有内容数据的列表。
这个列表包含了所有在QML中被声明为菜单子项的对象,以及分别使用addItem()和insertItem()方法动态添加或插入的项目。
注意:与contentChildren不同,contentData确实包括非可视的QML对象。当项目被插入或移动时,它不会被重新排序。
另见Item::data和contentChildren。
[read-only] contentModel : model
此属性持有用于显示菜单项的模型。
内容模型是为可视化目的提供的。它可以作为模型分配给展示菜单内容的内容项。
- Menu {
- id: menu
- contentItem: ListView {
- model: menu.contentModel
- }
- }
该模型允许菜单项被静态地声明为菜单的子项。
title : string
此属性持有菜单的标题。
当菜单是一个子菜单时,菜单的标题通常显示在菜单项的文本中,而当它在菜单栏中时,则显示在工具按钮的文本中。
void addItem(Item item)
将项目添加到项目列表的末尾。
void insertItem(int index, Item item)
在索引中插入项目。
Item itemAt(int index)
返回索引处的项目,如果不存在则为空。
void moveItem(int from, int to)
将一个项目从一个索引移到另一个索引。
void removeItem(int index)
移除索引处的项目。
注意:物品的所有权转移给呼叫者。