qt窗口--01

文章目录

  • qt窗口--01
    • 窗口概览
    • 菜单栏
    • 工具栏
    • 状态栏
    • 浮动窗口
      • 子窗口
      • 对话框
      • model
    • 结语

很高兴和大家见面,给生活加点impetus!!开启今天的编程之路!!
在这里插入图片描述
作者:٩( ‘ω’ )و260
我的专栏:qt,Linux,C++进阶,C++初阶,数据结构初阶,题海探骊,c语言
欢迎点赞,关注!!

qt窗口–01

窗口概览

在这里插入图片描述
qt中窗口主要分为6类,分别是标题,菜单栏,工具栏,中央窗口,状态栏,子窗口(铆接控件),接下来我们来依次介绍~

菜单栏

我们直接来看示例。
示例1,我们来完成最基本的添加菜单,以及添加菜单中的项,来看代码:
在这里插入图片描述
随后我们来完成槽函数的书写:
在这里插入图片描述
我们来看效果:
在这里插入图片描述

结论:如果菜单中的菜单项被按下,就会发送一个triggered的信号

示例2:创建快捷方式,使用快捷方式直接对菜单或菜单项进行操作。
我们还是直接引用上面的示例1:
在这里插入图片描述
同理,如果我们此时对于每个按钮设置上对应的槽函数,同时连接上triggered信号,就能够实现更多的操作~

示例三:菜单中并不是只能是菜单项,也可以是菜单。但是层数越多的话会导致用户体验不是很好,来看代码:
在这里插入图片描述
来看结果:
在这里插入图片描述及时就是类似于嵌套的形式了

示例4:设置分割线:
先来说细节:跟布局管理中讲解的spacer差不多,一定要注意添加的位置。
在上述例子中,如果我们需要再文件菜单中的菜单项1和菜单项2添加分割符,我们需要写在添加这两个菜单项的中间,来看代码:
在这里插入图片描述
示例5:我们给菜单和菜单项添加图片,仍然是使用qrc机制+设置Icon。
这里我先给出细节:

菜单项添加了图片文字和图片都会显示,菜单添加了图片只会显示图片,鼠标悬停在菜单上没有提示

来看效果:
在这里插入图片描述
但是,鼠标悬停提示其实也可以通过toolTip这个api接口来设置~

工具栏

我们直接来看示例:
示例1:同样也是需要setIcon,上面的过程大致已经操作过了,我们直接来讲解结论:

鼠标悬停在工具栏上的QAction会有提示的

这里我们不在演示,步骤其实是跟上面一样的~~

示例2:上面的图片显示其实toolBar有四个位置,那么也就是说,ToolBar中的QAction其实是可以移动的,我们来看代码示例:
在这里插入图片描述
我们来看效果:
在这里插入图片描述
如果此时我们鼠标悬停在此上,鼠标就会变成另外一个符号,此时我们可以拖动这个工具栏移动,此时成为可浮动状态。
在这里插入图片描述
在ToolBar中,默认四个位置都是可以放的,默认QToolBar是可以浮动的,但是我们也是可以修改的~

toolbar1->setAllowedAreas(Qt::LeftToolBarArea | Qt::BottomToolBarArea);//设置只能放在左下

来看结果:
在这里插入图片描述
当我想放在上面时,就会发现,没有这个蓝色的条条,放下鼠标键就会回到原先的位置。
同理,可浮动状态也是一样的,先来看有可浮动状态,默认就是有可浮动状态的~

toolbar1->setFloatable(true);//设置是否可浮动
toolbar1->setMovable(true);//设置是否可以移动

在这里插入图片描述
可浮动状态就是可以随便放,反之就不能随便放了

状态栏

状态栏主要用来信息的显示。
所以我们使用状态栏来显示临时信息,来看示例:
在这里插入图片描述
我们直接来看结果:
在这里插入图片描述
当然,为了防止多个控件在状态栏重合到一起,addWidget函数的第一个参数是添加的控件,第二个参数是设置该控件的拉伸系数。

浮动窗口

子窗口

其实对应的就是一个铆接部件。
我们直接来看代码;
在这里插入图片描述
我们来看结果:
在这里插入图片描述
这里一定需要注意这点,QDockWidget该控件只能够添加一个控件,需要添加多个控件的话需要借助Widget

对话框

首先,对话框是什么?是进行“短平快”的操作。例如一些提示,好比是否需要保存等等。
为什么有呢?因为此时程序不知道该怎么办了,需要用户做进一步的决定,随后程序才会继续执行!!

在最开始的时候,我们学习QT选择的是QWidget,随后我们又学习了QMainWindow,QDialog是我们最后一个学习的属性!因为这个只是一个对话框,创建项目的时候并不会作为一个主要开发窗口,所以我们这里仍然是创建mainWindow。

创建QDialog有两种方式,纯代码和图形化的方式,我们使用图形化的方式更加简单,操作是我们需要创建一个继承QDialog的类的ui文件,并使用一个按钮打开即可:
在这里插入图片描述
此时我们发现多出来了头文件,源文件和ui文件。
此时我们再来具体的代码:
在这里插入图片描述

为什么这里创建使用的是Dialog,而不是QDialog?
因为我使用的是Dialog继承QDialog,直接使用QDialog的话会导致不会使用ui文件来初始化。
在这里插入图片描述

我们来看结果:
在这里插入图片描述
问题:这两个对话框是不是同一个?答案肯定不是,因为是new出来的,地址一般都是不一样的,但是,我们发现这个dialog并没有delete掉,虽然挂到了对象树上,对象数销毁,所有内存都会归还,但是mainWindow一直存在,那么整个进程就还会存在,对象树还存在,这样就会造成内存泄漏。所以我们设置了WA_DeleteOnClose属性,,即当我们点击dialog右上方的叉号时,该dialog就会销毁!

model

模态/非模态。
模态:弹出对话框,只能操作该对话框,其他操作都做不了
非模态:弹出对话框,其余操作仍然能够进行操作的

所以,模态对话框一般会用在比较关键的时候。而且,上面的对话框是非模态的,因为我们点击按钮出现了对话框,还能够再来操作对话框之外的界面再来生成一个对话框。如果我们想要对话框是模态的,只需要将dialog->show();换成dialog->exec();即可
在这里插入图片描述
来看结果:
在这里插入图片描述
此时我还想创建一个对话框的话就不让我继续创建了,即此时我只能够操作第一个创建的dialog

结语

今天的内容到此为止,不足之处欢迎留言指出,感谢大家支持!!
千磨万击还坚韧,任尔东西南北风!
在这里插入图片描述

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

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

相关文章

Neo4j 社区版 Mac 安装教程

最近用到了nebulagraph图数据库做金融反欺诈项目,虽然nebula属于分布式架构,但依然感觉nebula使用不太顺手,这里顺便研究一下neo4j这款数据库如何,这里先从安装开始? 一、 准备工作 确认 Java 版本要求: N…

Android Studio(2025.1.2)Gemini Agent 使用指南

Android Studio(2025.1.2)Gemini Agent 使用指南 文章目录Android Studio(2025.1.2)Gemini Agent 使用指南1. 什么是 Gemini Agent?2. 如何启用和配置 Gemini Agent2.1 获取 API Key2.2 在 Android Studio 中配置3. 实…

计算机视觉--opencv(代码详细教程)

在计算机视觉的广袤领域中,OpenCV 是一座极为关键的里程碑。无论是在前沿的学术研究,还是在蓬勃发展的工业界,OpenCV 凭借其强大的功能与高效的性能,为开发者提供了丰富的图像处理和计算机视觉算法,助力无数项目落地。…

Centos6停止服务后yum改用阿里云

环境: OS:Centos 6.9 1.进入到yum配置目录 cd /etc/yum.repos.d 2.备份 cp CentOS-Base.repo CentOS-Base.repo.bk 3.下载 wget -O CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-6.repo 问题1: 因为Centos-6早就停止了更新维护,阿里云镜像网站将其仓库…

putty+Xming(XLaunch) 远程登录VirtualBox中的Ubuntu24.04,显示图形化(GUI)界面

测试环境:VirtualBox 7,Ubuntu24.04 desktop,Ubuntu24.04 Server(no desktop),均测试成功。 一、先测试putty远程登录VirtualBox中的Ubuntu,可以使用ssh、Telnet 等协议。参见拙文《ssh连接VirtualBox中的Ubuntu24.04(win11、put…

SpringBoot微头条实战项目

一、项目概述 微头条是一个基于现代技术栈构建的新闻发布和浏览平台,旨在为用户提供便捷的新闻阅读体验和高效的新闻管理功能。该项目通过前后端分离的架构设计,实现了用户注册、登录、新闻浏览、搜索、发布、修改和删除等功能,同时通过JWT技…

如何给电脑换个ip地址?电脑换ip几种方法

更换电脑的IP地址的方法取决于你的具体需求和网络环境(是换本地局域网IP还是换对外公网IP)。以下是几种常见的方法: 一、更换本地局域网IP地址(在同一个网络内) 这个IP地址通常由你的路由器(或公司的网络管…

Pytest项目_day04(Python做接口请求)

Requests包 在python中,可以使用requests包,用于做接口请求和接口测试request支持http和https简单的get函数调用如下:r.jsonr.status_coder.textget函数的带params用法post函数的带params用法 post也可以和get一样在url中传入参数在requests包…

Flink与Kafka核心源码详解-目录

Flink是Apache软件基金会下开源的分布式流批一体计算框架,具备实时流计算和高吞吐批处理计算的大数据计算能力。本专栏内容为Flink源码解析的记录与分享。 本文解析的Flink源码版本为:flink-1.19.0 以下为Flink-1.19.0-完整源码详解的目录导航。 Flink-…

【VLLM篇】:原理-实现

1、VLLM vLLM是一个建立在【PagedAttention】之上的高吞吐的【分布式服务引擎】,目标是【提高吞吐量】、【提高内存利用率】(kv-cache内存利用率高达96%),它的内存管理分配方式从【固定分配】改进为【分页管理】,类似操…

什么是 TcpCommunicationSpi

&#x1f9e9; 一、核心定位&#xff1a;什么是 TcpCommunicationSpi&#xff1f; /*** <tt>TcpCommunicationSpi</tt> is default communication SPI which uses* TCP/IP protocol and Java NIO to communicate with other nodes.*/翻译&#xff1a;TcpCommunicat…

【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 词云图-微博评论用户词云图实现

大家好&#xff0c;我是java1234_小锋老师&#xff0c;最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)视频教程&#xff0c;持续更新中&#xff0c;计划月底更新完&#xff0c;感谢支持。今天讲解词云图-微博评论用户词云图实现 视频在线地…

数据结构----栈和队列认识

目录 栈&#xff08;后进先出&#xff09; 栈的实现 头文件 初始化 入栈 注意&#xff1a; bool 判空 出栈----栈顶 注意 出栈顶元素&#xff0c;元素不会删除 注意&#xff1a; 获取栈中有效个数 销毁栈 源文件操作 用栈实现递归* 队列&#xff08;先进先出&a…

【Kafka系列】第二篇| Kafka 的核心概念、架构设计、底层原理

在大数据和分布式系统飞速发展的今天&#xff0c;消息队列作为高效的通信工具&#xff0c;在系统解耦、异步通信、流量削峰等方面作用显著。 而 Kafka 这款高性能、高吞吐量的分布式消息队列&#xff0c;在日志收集、数据传输、实时计算等场景中应用广泛。 接下来&#xff0c;我…

Kafka-exporter采集参数调整方案

#作者&#xff1a;张桐瑞 文章目录1 问题概述2 修改方案2.1修改参数2.2配置示例3 消费者组均分脚本3.1使用说明3.2脚本内容3.3实现原理说明4 KAFKA-EXPORTER流程代码4.1KAFKA-EXPORTER拉取数据流程1 问题概述 由于kafka-exporter获取kafka指标时间过长&#xff0c;无法通过cur…

AT32的freertos下modbus TCP移植

1.准备模板 打开雅特力官网&#xff0c;也就是带有LwIP的示例。 下载官方源码&#xff1a;modbus 2.移植 我这里是在这里新建两个文件夹&#xff0c;分别是modbus与port&#xff0c;这个任意&#xff0c;只需要将必要的文件加入项目即可。 将源码中的modbus这些都移植过来&a…

Redis面试精讲 Day 16:Redis性能监控与分析工具

【Redis面试精讲 Day 16】Redis性能监控与分析工具 开篇 欢迎来到"Redis面试精讲"系列第16天&#xff0c;今天我们将深入探讨Redis性能监控与分析工具。在大型分布式系统中&#xff0c;Redis作为关键的数据存储和缓存组件&#xff0c;其性能指标直接影响整个系统的…

vue3+vue-flow制作简单可拖拽可增删改流程图

实现效果实现代码 准备工作 安装依赖 npm install vue-flow/core npm install vue-flow/minimap //小地图 npm install vue-flow/controls //自带的缩放、居中、加锁功能我这里只用到上述三个&#xff0c;还有其余的可根据实际情况配合官方文档使用。 npm install vue-flow/bac…

itextPdf获取pdf文件宽高不准确

正常情况下我们通过下面方式获取宽高PdfReader reader new PdfReader(file.getPath()); float width reader.getPageSize(1).getWidth(); float height reader.getPageSize(1).getHeight();但是这样获取的宽高是不准确的&#xff0c;永远都是 宽 > 高&#xff0c;也就是横…

NodeJs学习日志(2):windows安装使用node.js 安装express,suquelize,mysql,nodemon

windows安装使用node.js 安装express&#xff0c;suquelize&#xff0c;mysql&#xff0c;nodemon 系统是win10&#xff0c;默认已经安装好nodejs与npm包名作用expressWeb应用框架suquelize数据库ORMmysql数据库nodemon代码热重载安装express 添加express生成器 npm add expres…