1.概述
菜单有两个主要用例:
- 上下文菜单。例如,右键单击后显示的菜单
- 弹出菜单。例如,单击按钮后显示的菜单
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一起使用,但它可以包含任何类型的项目。
参见自定义菜单、菜单控件和弹出式控件。
2.属性说明
[default] contentData : list<Object>
这个属性持有内容数据的列表。
这个列表包含了所有在QML中被声明为菜单子项的对象,以及分别使用addItem()和insertItem()方法动态添加或插入的项目。
注意:与contentChildren不同,contentData确实包括非可视的QML对象。当项目被插入或移动时,它不会被重新排序。
另见Item::data和contentChildren。
[read-only] contentModel : model
此属性持有用于显示菜单项的模型。
内容模型是为可视化目的提供的。它可以作为模型分配给展示菜单内容的内容项。
Menu {
id: menu
contentItem: ListView {
model: menu.contentModel
}
}
该模型允许菜单项被静态地声明为菜单的子项。
title : string
此属性持有菜单的标题。
当菜单是一个子菜单时,菜单的标题通常显示在菜单项的文本中,而当它在菜单栏中时,则显示在工具按钮的文本中。
3.函数说明
void addItem(Item item)
将项目添加到项目列表的末尾。
void insertItem(int index, Item item)
在索引中插入项目。
Item itemAt(int index)
返回索引处的项目,如果不存在则为空。
void moveItem(int from, int to)
将一个项目从一个索引移到另一个索引。
void removeItem(int index)
移除索引处的项目。
注意:物品的所有权转移给呼叫者。