前言这一节继续为大家讲解QML中一些比较有意思的控件。这一节我们要说的控件是菜单按钮Menu、弹出窗口Popup和侧滑抽屉Drawer。
菜单按钮 MenuMenu其实就是我们打来一个软件时出现的菜单项,菜单主要有两个使用方法,第一个是用作上下文菜单,比如说右键单击后显示的菜单。还有一个就是用作弹出菜单,比如说单击按钮后显示的菜单。通常,我们想要在菜单中显示一个项目,需要用到MenuItem,它提供一种熟悉的方式来响应被触发的菜单项。它有一个触发信号triggered()。
Menu的属性(大部分是从Qt5.10引入的)cascade : 保存菜单是否级联其子菜单
contentData : 保存内容数据列表
contentModel : 保存用于显示菜单项的模型
count : 保存项目数
currentIndex : 保存当前突出显示的项目的索引
delegate : 保存用于创建项目以表示操作的组件
focus : 保存弹出窗口是否需要焦点
overlap : 保存菜单水平重叠其父菜单的像素数量
title : 保存菜单的标题
Menu的方法(大部分是从Qt5.10引入的)
因为menu的方法函数太多了,所以我们列举部分方法函数,没提及的大家可以参考链接Action actionAt(index): 返回index处的操作,如果index无效则返回null
void addAction(action): 将操作添加到此菜单的末尾
void addItem(item): 将项目添加到项目列表的末尾
void addMenu(menu): 将菜单作为子菜单添加到此菜单的末尾
void dismiss(): 关闭该菜单所属层次结构中的所有菜单
弹出式菜单void popup(parent, real x, real y, MenuItem item = null): 在弹出式坐标系中指定位置x,y处打开菜单,即相对于其父项的坐标。
void popup(parent, point pos, MenuItem item = null):在弹出式坐标系中指定位置pos处打开菜单,即相对于其父项的坐标
void popup(parent, MenuItem item = null):在具有可用鼠标光标的台式机平台上,使用鼠标光标打开菜单,否则将菜单置于其父项上方
Menu的使用
使用Menu时需要导入控件库,另外需要注意,因为其大部分的属性和方法都是基于Qt5.10的,所以Qt的版本必须在5.10及以上,要不然很容易报错的。
上下文菜单
当用作上下文菜单时,建议打开菜单的方法是调用popup()。如果没有指定位置的话,菜单将位于具有鼠标