【Qt】:窗口

窗口

一.概述

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()函数决定,其中可以设置的位置包括:

  1. Qt::LeftToolBarArea 停靠在左侧
  2. Qt::RightToolBarArea 停靠在右侧.
  3. Qt::TopToolBarArea 停靠在顶部.
  4. Qt:.BottomToolBarArea 停靠在底部.
  5. Qt:AllToolBarAreas 以上四个位置都可停靠

⽅式⼆:使⽤QToolBar类提供的setAllowedAreas()函数设置停靠位置

在创建工具栏的同时指定其停靠的位置,指的是程序运行时工具栏默认所在的位置;而使用setAllowedAreas()函数设置停靠位置,指的是工具栏允许其所能停靠的位置。

四.状态栏

状态栏是应用程序中输出简要信息的区域。一般位于主窗口的最底部,一个窗口中最多只能有一个状态栏。在Qt中,状态栏是通过QstatusBar类来实现的。在状态栏中可以显示的消息类型有:

实时消息:如当前程序状态

永久消息:如程序版本号,机构名称

进度消息:如进度条提示,百分百提示

代码示例:创建一个状态栏

如果时间设置为0或者默认,就是长久显示。

状态栏里除了可以显示文本外,也可以显示器件。

五.浮动窗口

浮动窗口的创建是通过QDockWidget类提供的构造方法QDockWidget()函数动态创建的;浮动窗口其实就是子窗口。

代码示例

1.创建一个浮动窗口

2.给窗口添加各种属性

相关推荐
2501_941805934 小时前
在大阪智能零售场景中构建支付实时处理与高并发顾客行为分析平台的工程设计实践经验分享
数据库
你怎么知道我是队长4 小时前
C语言---枚举变量
c语言·开发语言
李慕婉学姐4 小时前
【开题答辩过程】以《基于JAVA的校园即时配送系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·开发语言·数据库
吃茄子的猫4 小时前
quecpython中&的具体含义和使用场景
开发语言·python
珠海西格电力4 小时前
零碳园区有哪些政策支持?
大数据·数据库·人工智能·物联网·能源
云栖梦泽4 小时前
易语言中小微企业Windows桌面端IoT监控与控制
开发语言
数据大魔方5 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
Chasing Aurora5 小时前
数据库连接+查询优化
数据库·sql·mysql·prompt·约束
倔强的石头_5 小时前
【金仓数据库】ksql 指南(六)—— 创建与管理用户和权限(KingbaseES 安全控制核心)
数据库
Edward.W6 小时前
Python uv:新一代Python包管理工具,彻底改变开发体验
开发语言·python·uv