QML控件类型:Menu

一、描述

可用作上下文菜单或弹出菜单的菜单弹出窗口。

当用作上下文菜单:

MouseArea {
    anchors.fill: parent
    acceptedButtons: Qt.LeftButton | Qt.RightButton
    onClicked: {
        if (mouse.button === Qt.RightButton)
            contextMenu.popup()
    }
    onPressAndHold: {
        if (mouse.source === Qt.MouseEventNotSynthesized)
            contextMenu.popup()
    }

    Menu {
        id: contextMenu
        MenuItem { text: "Cut" }
        MenuItem { text: "Copy" }
        MenuItem { text: "Paste" }
    }
}

当用作弹出菜单时,最简单的方法是通过使用各自的属性指定所需的 x 和 y 坐标来指定位置,然后调用 open() 打开菜单。

Button {
    id: fileButton
    text: "File"
    onClicked: menu.open()

    Menu {
        id: menu
        y: fileButton.height

        MenuItem {
            text: "New..."
        }
        MenuItem {
            text: "Open..."
        }
        MenuItem {
            text: "Save"
        }
    }
}

还可以在 Menu 中创建子菜单并声明 Action 对象:

Menu {
    Action { text: "Cut" }
    Action { text: "Copy" }
    Action { text: "Paste" }

    MenuSeparator { }

    Menu {
        title: "Find/Replace"
        Action { text: "Find Next" }
        Action { text: "Find Previous" }
        Action { text: "Replace" }
    }
}

默认情况下,子菜单在具有可用鼠标光标的桌面平台上是级联的。非级联菜单一次显示一个菜单,并以父菜单为中心。

通常,菜单项被静态声明为菜单的子项,但 Menu 还提供 API 来动态添加、插入、移动和删除项。

二、属性成员

1、cascade : bool

菜单是否级联其子菜单。默认值是特定于平台的。

非级联菜单一次显示一个菜单,并以父菜单为中心。

注意:在菜单打开时更改此属性的值无效。

2、[default] contentData : list<Object>

内容数据列表。

该列表包含在 QML 中声明为菜单子项的所有对象,以及分别使用 addItem() 和 insertItem() 方法动态添加或插入的项目。

注意:与 contentChildren 不同,contentData 确实包含非可视 QML 对象。插入或移动项目时不会重新排序。

 3、【只读】contentModel : model

用于显示菜单项的模型。

提供内容模型用于可视化目的。它可以作为模型分配给呈现菜单内容的内容项。

Menu {
    id: menu
    contentItem: ListView {
        model: menu.contentModel
    }
}

 4、【只读】count : int

项目的数量。

5、currentIndex : int

当前突出显示的项目的索引。菜单项可以通过鼠标悬停或键盘导航突出显示。

6、delegate : Component

用于创建项目以呈现动作的组件。

Menu {
    Action { text: "Cut" }
    Action { text: "Copy" }
    Action { text: "Paste" }
}

7、focus : bool

弹出窗口是否需要焦点。默认为 false。

当弹出窗口实际获得焦点时,activeFocus 将为true。

8、overlap : real

菜单与其父菜单水平重叠的像素数量。默认值是特定于样式的。

该属性仅在菜单用作级联子菜单时才有效。

在菜单打开时更改属性的值无效。

9、title : string

菜单的标题。

当菜单是子菜单时,菜单的标题通常显示在菜单项的文本中,而当它在菜单栏中时,则显示在工具按钮的文本中。

三、成员函数

 1、void popup(Item parent, real x, real y, MenuItem item = null)

      void popup(real x, real y, MenuItem item = null)

在弹出窗口坐标系中的指定位置 x, y 处打开菜单,即相对于其父项的坐标。

菜单可以选择与特定菜单项对齐。

    void popup(Item parent, point pos, MenuItem item = null)

    void popup(point pos, MenuItem item = null)

在弹出窗口坐标系中的指定位置 pos 处打开菜单,即相对于其父项的坐标。

菜单可以选择与特定菜单项对齐。

    void popup(Item parent, MenuItem item = null)

    void popup(MenuItem item = null)

在鼠标光标处打开菜单,否则将菜单置于其父项的中心。

菜单可以选择与特定菜单项对齐。

2、Action actionAt(int index)

返回索引处的动作,如果索引无效或指定索引处没有操作,则返回 null。

3、void addAction(Action action)

将动作添加到此菜单的末尾。

4、void addItem(Item item)

将添加到项目列表的末尾。

5、void addMenu(Menu menu)

将菜单作为子菜单添加到此菜单的末尾。

6、void dismiss()

关闭此菜单所属的层次结构中的所有菜单。

注意:与仅关闭菜单及其子菜单的 close() 不同,dismiss() 关闭菜单的整个层次结构,包括父菜单。

7、void insertAction(int index, Action action)

在索引处插入动作。该索引位于菜单中的所有项目中。

8、void insertItem(int index, Item item)

在索引处插入项目。

9、void insertMenu(int index, Menu menu)

在索引处插入菜单作为子菜单。该索引位于菜单中的所有项目中。

10、Item itemAt(int index)

返回索引处的项目,如果不存在则返回 null。

11、Menu menuAt(int index)

返回索引处的子菜单,如果索引无效或指定索引处没有子菜单,则返回 null。

12、void moveItem(int from, int to)

将索引 from 处的项目移动到索引 to。

13、void removeAction(Action action)

删除并销毁指定的动作。

14、void removeItem(Item item)

移除并销毁指定的项目。

15、void removeMenu(Menu menu)

删除和销毁指定的菜单。

16、Action takeAction(int index)

删除并返回索引处的动作。该索引位于菜单中的所有项目中。动作的所有权转移给调用者。

17、MenuItem takeItem(int index)

删除并返回索引处的项目。项目的所有权转移给调用者。

18、Menu takeMenu(int index)

删除并返回 index 处的菜单。该索引位于菜单中的所有项目中。

菜单的所有权转移给调用者。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值