一、描述
MenuBar 由下拉菜单组成,通常位于窗口的顶部边缘。继承自 Container。
(资料图片仅供参考)
ApplicationWindow {id: windowwidth: 320height: 260visible: truemenuBar: MenuBar {Menu {title: qsTr(\"&File\")Action { text: qsTr(\"&New...\") }Action { text: qsTr(\"&Open...\") }Action { text: qsTr(\"&Save\") }Action { text: qsTr(\"Save &As...\") }MenuSeparator { }Action { text: qsTr(\"&Quit\") }}Menu {title: qsTr(\"&Edit\")Action { text: qsTr(\"Cu&t\") }Action { text: qsTr(\"&Copy\") }Action { text: qsTr(\"&Paste\") }}Menu {title: qsTr(\"&Help\")Action { text: qsTr(\"&About\") }}}}
通常,菜单静态声明为菜单栏的子项,但 MenuBar 还提供 API 来动态添加、插入、删除和获取菜单。 可以使用 menuAt() 访问菜单栏中的菜单。
二、属性成员
1、delegate : Component
用于创建菜单栏项以在菜单栏中显示菜单的委托组件。
2、menus : list
菜单列表。
该列表包含在 QML 中声明为菜单栏子项的所有菜单,以及分别使用 addMenu() 和 insertMenu() 方法动态添加或插入的菜单。
三、成员函数
1、void addMenu(Menu menu)
将菜单添加到菜单列表的末尾。
2、void insertMenu(int index, Menu menu)
在索引处插入菜单。
3、Menu menuAt(int index)
返回索引处的菜单,如果不存在则返回 null。
4、void removeMenu(Menu menu)
删除和销毁指定的菜单。
5、Menu takeMenu(int index)
移除并返回 index 处的菜单。菜单的所有权转移给调用者。
【领 QT开发教程 学习资料, 点击下方链接莬费领取↓↓ ,先码住不迷路~】
点击这里:
DialogButtonBox
对话框和消息框通常以符合该平台的界面指南的顺序显示按钮。不同的平台总是有不同顺序的对话按钮。 DialogButtonBox 允许开发人员向其中添加按钮,并且会自动为用户平台使用适当的顺序。
有几种使用 DialogButtonBox 的方法。一种方法是指定标准按钮(例如确定、取消、保存)并让按钮框设置按钮。
DialogButtonBox {standardButtons: DialogButtonBox.Ok | DialogButtonBox.CancelonAccepted: console.log(\"Ok clicked\")onRejected: console.log(\"Cancel clicked\")}
或者,可以手动指定按钮及其角色:
DialogButtonBox {Button {text: qsTr(\"Save\")DialogButtonBox.buttonRole: DialogButtonBox.AcceptRole}Button {text: qsTr(\"Close\")DialogButtonBox.buttonRole: DialogButtonBox.DestructiveRole}}
还可以混合和匹配普通按钮和标准按钮。
当在按钮框中单击按钮时,会为实际按下的按钮发出 clicked() 信号。 此外,当按下具有相应角色的按钮时,会自动发出以下信号:
1、alignment : flags
按钮的对齐方式。可能的值:
undefined:按钮被调整大小以填充可用空间。
2、buttonLayout : enumeration
在排列按钮框中包含的按钮时要使用的按钮布局策略。默认值是特定于平台的。
3、delegate : Component
用于创建标准按钮的委托。
4、position : enumeration
按钮框的位置。
如果按钮框被指定为 ApplicationWindow 或 Page 的页眉或页脚,则会自动设置相应的位置。
5、standardButtons : enumeration
按钮框使用的标准按钮的组合。这些按钮将按照用户平台的适当顺序放置。
DialogButtonBox.NoButton:无效按钮。
三、附加属性成员
1、[read-only] DialogButtonBox.buttonBox : DialogButtonBox
管理此按钮的按钮框,如果该按钮不在按钮框中,则为 null。
2、DialogButtonBox.buttonRole : enumeration
持有按钮框中每个按钮的角色。
四、信号成员
1、accepted()
当单击使用 AcceptRole 或 YesRole 定义的按钮时,会发出此信号。
2、applied()
当单击使用 ApplyRole 定义的按钮时,会发出此信号。
3、clicked(AbstractButton button)
当单击按钮框内的按钮时发出此信号。
4、discarded()
当单击使用 DiscardRole 定义的按钮时,会发出此信号。
5、helpRequested()
单击使用 HelpRole 定义的按钮时会发出此信号。
6、rejected()
当单击使用 RejectRole 或 NoRole 定义的按钮时,将发出此信号。
7、reset()
当单击使用 ResetRole 定义的按钮时,会发出此信号。
五、函数成员
1、AbstractButton standardButton(StandardButton button)
返回指定的标准按钮,如果不存在则返回 null。
Container 是类容器用户界面控件的基本类型,允许动态插入和删除项目。是 DialogButtonBox、MenuBar、SplitView、SwipeView、TabBar 的基类。
1.1、使用容器
通常,项目被静态声明为 Container 的子项,但也可以动态添加、插入、移动和删除项目。可以使用 itemAt() 或 contentChildren 访问容器中的项目。
大多数容器都有“当前项”的概念。当前项是通过 currentIndex 属性指定的,并且可以使用只读的 currentItem 属性进行访问。
以下示例将项目动态插入到 TabBar:
Row {TabBar {id: tabBarcurrentIndex: 0width: parent.width - addButton.widthTabButton { text: \"TabButton\" }}Component {id: tabButtonTabButton { text: \"TabButton\" }}Button {id: addButtontext: \"+\"flat: trueonClicked: {tabBar.addItem(tabButton.createObject(tabBar))console.log(\"added:\", tabBar.itemAt(tabBar.count - 1))}}}
1.2、管理当前索引
当同时使用多个容器时,例如 TabBar 和 SwipeView,它们的 currentIndex 属性可以相互绑定以保持同步。 当用户与任一容器交互时,其当前索引更改会自动传播到另一个容器。
但是在 JavaScript 中分配 currentIndex 值会删除相应的绑定。为了保留绑定,应使用以下方法更改当前索引:
TabBar {id: tabBarcurrentIndex: swipeView.currentIndex}SwipeView {id: swipeViewcurrentIndex: 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}
1、contentChildren : list
内容子项的列表。该列表包含在 QML 中声明为容器子项的所有项目,以及分别使用 addItem() 和 insertItem() 方法动态添加或插入的项目。
与 contentData 不同,contentChildren 不包含非可视 QML 对象。插入或移动项目时会重新排序。
2、[default] contentData : list
内容数据列表。该列表包含在 QML 中声明为容器子项的所有对象,以及分别使用 addItem() 和 insertItem() 方法动态添加或插入的项目。
与 contentChildren 不同,contentData 确实包含非可视 QML 对象。 插入或移动项目时不会重新排序。
3、contentHeight : real / contentWidth : real
内容尺寸。用于计算容器的总隐含尺寸。
除非显式覆盖,否则内容尺寸会根据容器中项目的隐式尺寸自动计算。
4、[read-only] contentModel : model
项目的内容模型。内容模型用于可视化项目。
Container {id: containercontentItem: ListView {model: container.contentModel}}
5、[read-only] count : int
项目的数量。
6、currentIndex : int
当前项目的索引。
7、[read-only] currentItem : Item
当前项目。
1、void addItem(Item item)
添加一个项目。
2、void decrementCurrentIndex()
递减 / 递增 / 设置容器的当前索引。
可以调用这些方法来更改当前索引,而不会破坏现有的 currentIndex 绑定。
3、void insertItem(int index, Item item)
在 index 处插入一个项目。
4、Item itemAt(int index)
返回 index 处的项目,如果不存在则返回 null。
5、void moveItem(int from, int to)
将 from 处的项目移动到 to。
6、void removeItem(Item item)
移除并销毁指定的项目。
7、Item takeItem(int index)
删除并返回索引处的项目。项目的所有权转移给调用者。
关键词:
分享至:
打破国外企业垄断 国产化N08120冷氢化流化床反应器研制完成
外交部:美国举办“民主峰会”是复活冷战思维的危险之举
深入开展国际执法合作 中资企业海外利益得到有效维护
在野党合作告吹 韩国总统选举再添变数
俄美持续上演“威慑游戏”
美欲织密亚太关系网
印尼军机采购按下“快进键”
Copyright 2015-2022 起点家具网 版权所有 备案号:皖ICP备2022009963号-12 联系邮箱: 39 60 29 14 2@qq.com