窗口
一.概述
Qt窗口是通过QMainWindow类来实现的。
QMainWindow是一个为用户提供主窗口程序的类,继承自QWidget类,并且提供了一个预定义的布局。QMainWindow包含一个菜单栏(menu bar)、多个工具E(tool DaIr's)、多1行园口多以接部件)(dock widgets)、一个状态栏(status bar)和一个中心部H什(cenlra wIugeC,t他位.用程序的基础,如文本编辑器,图片编辑器等。如下图为QMainwindow中各组件所处的位置:
从上往下分别是菜单栏,工具栏,子窗口,中央窗口,状态栏。
二.菜单栏
Qt中的菜单栏是通过QMenuBar这个类来实现的。一个主窗口最多只有一个菜单栏。位于主窗口顶部、主窗口标题栏下面。菜单栏中包含菜单.菜单中包含菜单项.
创建一个菜单
1.一个简单的菜单
创建流程:菜单栏->菜单->菜单项
菜单栏的创建可以借助于QMainWindow类提供的menuBar()函数来实现
创建菜单,并通过 QMenu 提供的 addMenu() 函数来添加菜单
在Qt中,并没有专⻔的菜单项类,可以通过 QAction 类,抽象出公共的动作
如果想让菜单项可点击也很简单,只需要设置槽函数与trigge(点击信号)相连即可。
小知识:如果上述我们重复创建了menuBar,就会导致旧的menuBar脱离对象树,从而无法释放,造成内存泄漏。更推荐使用this->menuBar()的方式创建,如果已经创建了menuBar则返回已经创建了的,否则就新建一个。
2.添加快捷键
如果想要添加快捷键,只需要&+按键,例如:给文件取快捷键F,只需要在文件后面加&F即可。键盘alt+f即可。
3.嵌套子菜单
菜单里也可以嵌套子菜单
4.添加下划线
在菜单项之间可以添加分割线。添加分割线是通过 QMenu 类提供的addSeparator() 函数来实现;
5.添加图标
依然使用qrc文件,利用函数setIcon就可以设置。
三.工具栏
工具栏是应用程序中集成各种功能实现快捷键使用的一个区域。可以有多个,也可以没有,它并不是应用程序中必须存在的组件。它是一个可移动的组件,它的元素可以是各种窗口组件,它的元素通常以图标按钮的方式存在。如下图为工具栏的示意图:
1.创建一个简单的工具栏
当然也可以创建图标。
2.设置工具栏的停靠位置
工具栏停靠位置的设置有两种方式。一种是在创建工具栏的同时指定停靠的位置,另一种是通过QToolBar类提供的setAllowedAreas()函数来设置。
⽅式⼀:创建⼯具栏的同时指定其停靠的位置
在创建工具栏的同时,也可以设置工具栏的位置,其默认位置是在窗口的最上面;如上述代码,默认在最上面显示。工具栏允许停靠的区域由QToolBar类提供的allowAreas()函数决定,其中可以设置的位置包括:
- Qt::LeftToolBarArea 停靠在左侧
- Qt::RightToolBarArea 停靠在右侧.
- Qt::TopToolBarArea 停靠在顶部.
- Qt:.BottomToolBarArea 停靠在底部.
- Qt:AllToolBarAreas 以上四个位置都可停靠
⽅式⼆:使⽤QToolBar类提供的setAllowedAreas()函数设置停靠位置
在创建工具栏的同时指定其停靠的位置,指的是程序运行时工具栏默认所在的位置;而使用setAllowedAreas()函数设置停靠位置,指的是工具栏允许其所能停靠的位置。
四.状态栏
状态栏是应用程序中输出简要信息的区域。一般位于主窗口的最底部,一个窗口中最多只能有一个状态栏。在Qt中,状态栏是通过QstatusBar类来实现的。在状态栏中可以显示的消息类型有:
实时消息:如当前程序状态
永久消息:如程序版本号,机构名称
进度消息:如进度条提示,百分百提示
代码示例:创建一个状态栏
如果时间设置为0或者默认,就是长久显示。
状态栏里除了可以显示文本外,也可以显示器件。
五.浮动窗口
浮动窗口的创建是通过QDockWidget类提供的构造方法QDockWidget()函数动态创建的;浮动窗口其实就是子窗口。
代码示例
1.创建一个浮动窗口
2.给窗口添加各种属性