ApplicationWindows
- ApplicationWindows应用程序窗口
- Action
- 菜单类控件
- 3.StatusBar
- 4.工具栏控件类
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的子类。这是专为工具栏显示优化的按钮,其余属性则同普通的按钮类似。