【Qt】:窗口

news2024/11/25 2:29:24

窗口

  • 一.概述
  • 二.菜单栏
    • 1.一个简单的菜单
    • 2.添加快捷键
    • 3.嵌套子菜单
    • 4.添加下划线
    • 5.添加图标
  • 三.工具栏
    • 1.创建一个简单的工具栏
    • 2.设置工具栏的停靠位置
  • 四.状态栏
  • 五.浮动窗口

一.概述

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.给窗口添加各种属性

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1583044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

经典本地影音播放器纯净无广告版

MPC-BE(Media Player Classic Black Edition)是来自 MPC-HC(Media Player Classic Home Cinema)的俄罗斯开发者重新编译优化后的一款经免费的经典全能影音播放器,纯净无广告,启动速度快,占用消耗…

ES7-10:async和await、异步迭代..

1-ES7新特性 indexof如果没有就返回-1,有就返回索引 如果仅仅查找数据是否在数组中,建议使用includes,如果是查找数据的索引位置,建议使用indexOf更好一些 2-ES8-async和await 所有的需要异步处理的Promise对象都写在async中await等待结果 async、await 使异步操…

HEC-HMS水文模型

HEC-HMS是美国陆军工程兵团水文工程中心开发的一款水文模型。HMS能够模拟各种类型的降雨事件对流域水文,河道水动力以及水利设施的影响,在世界范围内得到了广泛的应用。它有着完善的前后处理软件,能有效减轻建模的负担;能够与HEC开…

数据挖掘实战-基于机器学习的垃圾邮件检测模型(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

30.WEB渗透测试-数据传输与加解密(4)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:29.WEB渗透测试-数据传输与加解密(3)-CSDN博客 加解密需要用到的源…

【linux】sudo 与 su/su -之间的区别

一、区别 二、其他 大概是因为使用 su 命令或直接以 root 用户身份登录有风险,所以,一些 Linux 发行版(如 Ubuntu)默认禁用 root 用户帐户。鼓励用户在需要 root 权限时使用 sudo 命令。 然而,您还是可以成功执行 su…

4.10作业

//.h文件#ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //定时器事件类 #include <QTime> //时间类 #include <QString> #include <QPushButton> //按钮类 #include <QLabel> //标签类 #include <QT…

<-泛型->

1.泛型的概念 所谓泛型&#xff0c;就是允许在定义类, 接口 时通过一个"标识"表示类中某个属性的类型或者某个方法的返回值或形参类型.这个类型参数将在使用时确定. 2.举例 (1). 集合类在设计阶段/声明阶段不能确定这个容器到底存的是什么对象&#xff0c;所以在JDK…

蓝桥杯PythonB组练习——矩形面积交

一、题目 问题描述   平面上有两个矩形&#xff0c;它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形&#xff0c;我们给出它的一对相对顶点的坐标&#xff0c;请你编程算出两个矩形的交的面积。 输入格式   输入仅包含两行&#xff0c;每行描述一个矩形。   在每行中…

Python 新手最容易踩的坑

Python新手最容易踩的坑 缩进错误忘记引入模块使用未定义的变量不理解变量作用域字符串格式化错误乱用关键字多余的符号本期图书推荐&#xff1a;Python算法小讲堂---39个算法案例带你玩转Python内容简介获取方式 在学习 Python 的过程中&#xff0c;新手往往会遇到一些常见的陷…

HarmonyOS开发实例:【分布式数据管理】

介绍 本示例展示了在eTS中分布式数据管理的使用&#xff0c;包括KVManager对象实例的创建和KVStore数据流转的使用。 通过设备管理接口[ohos.distributedDeviceManager]&#xff0c;实现设备之间的kvStore对象的数据传输交互&#xff0c;该对象拥有以下能力 ; 1、注册和解除注…

SpringBoot菜品分页查询模块开发(多表连接查询)

需要注意的地方 为什么创建VO类怎么进行多表连接查询分页查询的统一返回结果类PageResult分页查询Mapper的返回结果是Page<目标实体类> 需求分析与设计 一&#xff1a;产品原型 系统中的菜品数据很多的时候&#xff0c;如果在一个页面中全部展示出来会显得比较乱&…

力扣HOT100 - 238. 除自身以外数组的乘积

解题思路&#xff1a; 当前位置的结果就是它左部分的乘积再乘以它右部分的乘积。因此需要进行两次遍历&#xff0c;第一次遍历用于求左部分的乘积&#xff0c;第二次遍历在求右部分的乘积的同时&#xff0c;再将最后的计算结果一起求出来。 class Solution {public int[] prod…

Transformer详解和知识点总结

目录 1. 注意力机制1.1 注意力评分函数1.2 多头注意力&#xff08;Multi-head self-attention&#xff09; 2. Layer norm3. 模型结构4. Attention在Transformer中三种形式的应用 论文&#xff1a;https://arxiv.org/abs/1706.03762 李沐B站视频&#xff1a;https://www.bilibi…

(学习日记)2024.04.05:UCOSIII第三十三节:互斥量

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

SpringBoot第一个hello world项目

文章目录 前言一、Spring Boot是什么&#xff1f;二、使用步骤1. 创建项目2.书写测试 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了…

DRL-VWAP算法

摘要 在量化策略的交易端&#xff0c;为了更好的扩大策略的资金容量必须要考虑策略冲击陈本的降低。本文梳理了传统 VWAP 存在的诸多弊端&#xff0c;主要在于对于日内交易信息的缺失与忽略市场行情的影响。本文梳理了传统VWAP 算法存在的主要弊端&#xff0c;并改写了传统 VW…

20240409在全志H3平台的Nano Pi NEO CORE开发板运行的Ubuntu Core更新boot.img(eMMC启动)

20240409在全志H3平台的Nano Pi NEO CORE开发板运行的Ubuntu Core更新zImage内核 2024/4/9 9:21 一、生成zImage: 参考资料&#xff1a; http://wiki.friendlyelec.com/wiki/index.php/NanoPi_NEO_Core/zh#.E7.83.A7.E5.86.99.E5.88.B0eMMC NanoPi NEO Core/zh 6 FriendlyCore…

【leetcode面试经典150题】37. 矩阵置零(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

大数据相关组件安装及使用

自学大数据相关组件 持续更新中。。。 一、linux安装docker 1、更新yum sudo yum update2、卸载docker旧版本 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine3、…