QML控件和对话框之ApplicationWindows

文章介绍了QtQuickControls中的ApplicationWindow,它相当于Qt/C++中的QMainWindow,提供menuBar、toolBar和statusBar等属性。Action控件用于封装应用中的命令,可添加到菜单和工具栏并支持快捷键。MenuBar和Menu用于构建菜单系统,而StatusBar和ToolBar则涉及状态栏和工具栏的使用。ToolButton是优化过的按钮,常用于工具栏。
摘要由CSDN通过智能技术生成

ApplicationWindows应用程序窗口

Application Window在 Qt Quick Controls中类似于QMain Window 在 Qt/C++中的角色,ApplicationWindow可以充当应用程序顶层窗口,具有自己的布局,包含menuBar、toolBar、statusBar等属性,可以使用平台无关的方式方便地添加菜单栏、工具栏和状态栏等项目,该类型还包含一个contentltem属性,用来进行窗口的大小设置。
在这里插入图片描述
在这里插入图片描述

Action

Action控件似于QAction类,封装应用程序中的动作命令。Action可以添加到菜单、工具条中,由用户触发或通过快捷键调用。使用Action最大的好处在于,出现在多个位置的Action可以自动同步,比如,可以将一个Action添加到菜单栏和工具栏,当修改了Action的某些属性时,菜单栏和工具栏对应的按钮会同步改变,QtQuick中支持为Button、ToolButton和Menultem添加Action.前面的例子创建了4个Action:quitAction、cutAction、copyAction和pasteAction,其中,quitAction被添加到菜单中;后三者则同时添加到了菜单和工具栏。Action的text属性就是Action在界面上显示的文本。同QAction类似,也可以使用“&.”符号指定快捷键,还可以使用tooltip属性来设置工具提示。iconName属性指定了图标名字,该名字由当前主题定义,通常由操作系统提供。iconSource属性指定了图标文件或资源的URL.与iconName不同,iconSource通常指向用户提供的图标文件。QML既可以由文件系统直接加载,又可以从Qt资源系统中加载。如果QML文档不是从资源系统中加载,那么iconSource属性不能使用资源系统中的图片,也就是不能使用.qre文件中的资源,这一点与Qt/C++不同,这里将Action的
iconSource设置为相对路径,例如“images/quit.png”,这意味着Action需要寻找当前目录下的images 目录中的quit.png文件。Action可以通过shortcut属性来设置快捷键,除了像代码中那样使用字符串来设置快捷键,还可以使用标准键,例如复制操作就是StandardKey.Copy,全部的标准键可以在帮助中查看StandardKey关键字。
Action 具有triggered()信号,类似于QAction的triggered()信号。通过连接这个信号,可以响应Action的动作。为达到这一目的,需要在相应的onTriggered()信号处理器中编写代码。
Action类型包含一个checkable属性,可以设置Action是否可以被选中或者被切换状态,默认是false,如果设置为true,那么可以通过checked属性来获取或设置状态。状态改变时会发射toggled()信号,而且这时还可以使用exclusiveGroup属性将几个Action设置为互斥的一组,同组中只能有一个Action被选中。

菜单类控件

Application Window 有一个menuBar 属性,用于设置菜单栏,默认情况下,菜单栏是没有设置的。menuBar属性要指定一个MenuBar类型对象,MenuBar类似于QMenuBar,用于表示一个菜单栏,MenuBar只有menus和style两个属性,其中menus是list<Menu>类型。这是一个默认属性,意味着可以直接将子对象添加到一个MenuBar实例中。MenuBar可以添加Menu类型的子控件,如前面的代码所示。Menu对应着QMenu,可以作为菜单栏的顶层菜单(例如File、Edit等),可以作为另外菜单的子菜单,也可以作为独立菜单或者上下文菜单。Menu的title属性类似于Action的text属性,用于显示菜单的文本,它也支持使用“&.”指定快捷键以及使用qsTr()函数支持国际化。Menu有一个默认属性items,用于设置菜单的子项目。虽然这个属性的类型是list<Object>,但它仅支持Menu、MenuItem和MenuSeparator 这3种类型的对象作为其子项目。Menu可以作为当前菜单的子菜单;Menultem作为当前菜单的菜单项;MenuSeparator作为当前菜单的分隔符。Menu类型包含了一系列有用的方法,例如:添加菜单项addltem()、添加子菜单addMenu()、添加分隔符addSeparator()、插人菜单项insertItem()、插人菜单insertMenu()、插入分隔符insertSeparator()、移除项removeltem()(可以是菜单、菜单项或分隔符)以及在光标处打开菜单的popup()等,值得说明的是,Menu的insertltem函
数支持将动态创建的对象添加到菜单项。Menultem是Menu 最常见的子项目。Menultem对应C++中的QMenultem,作为添加到Menu或者MenuBar的菜单项,Menultem与Action具有相似的属性和信号,而且Menultem可以将一个Action对象赋值给其action属性,用于初始化MenuItem的各个属性,比如text、iconName等。可以使用MenuSeparator类型作为菜单分隔线,该类型包含一个visible属性来设
置其是否可见。

3.StatusBar

ApplicationWindow的statusBar属性用于向应用程序窗口添加状态栏,这个属性的类型是Item,因此可以将任何Item对象设置为状态栏,但最常见的还是使用StatusBar控件。默认情况下,这个属性是没有默认值的,因此没有状态栏。当设置了某个控件时,状态栏将会自动附加到窗口中。
StatusBar通常只会作为ApplicationWindow状态栏。需要注意的是,StatusBar并没有提供布局管理器,所以,在使用时必须添加自己的布局管理器。正如前面代码所展示的那样,一般会为StatusBar增加RowLayout布局管理器,用于排列添加到状态栏的控件。

4.工具栏控件类

Applicatio1Window 的toolBar属性用于向应用程序窗口添加工具栏。toolBar属性与statusBar非常类似。这个属性的类型同样是Item,但最常见的是使用ToolBar控件,默认情况下,这个属性是没有默认值的,因此应用程序窗口没有工具栏。当设置了某个控件时,工具栏将会自动附加到窗口中。ToolBar通常只会作为Application Window的工具栏。需要注意的是,与StatusBar类似,ToolBar也没有提供布局管理器,所以,使用时一般需要添加自己的布局管理器。就像前面代码中展示的那样,在使用ToolBar控件时,一般会为其增加了一个RowLayout 布局管理器。添加到工具栏的按钮可以是ToolButton类型。ToolButton是Button的子类。这是专为工具栏显示优化的按钮,其余属性则同普通的按钮类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值