当前位置: 首页 > news >正文

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.lryc.cn/news/611001.html

相关文章:

  • 【数据结构入门】数组和链表的OJ题(2)
  • LeetCood算法题~水果成篮
  • 美化一下达梦grant授权说明
  • 使用vscode编写markdown文档(使用Markdown Preview Enhanced和markdownlint两个插件)以及若干配置
  • vscode 关闭自动更新
  • 英语中日期与时间缩写
  • 计算机网络:目的网络在路由表项中的作用
  • RabbitMQ削峰填谷详解:让系统在流量洪峰中“稳如泰山”
  • Rust进阶-part4-智能指针2
  • linux查看kafka的消费组里是否有积压
  • 带 TrustZone 的按键点灯工程示例
  • 【C++篇】C++11:右值引用与移动语义
  • mac安装pycharm
  • CVPR优秀论文 | DashGaussian:在200秒内优化三维高斯点绘制
  • 蓝桥杯常用java API
  • 『 C++ 入门到放弃 』- 智能指针
  • 飞算JavaAI—AI编程助手 | 引领开发新时代,智能化编程的完美助手
  • 从「同步」到「异步」:用 aiohttp 把 Python 网络 I/O 榨到极致
  • Vue.js之核心语法与指令
  • 网络 —— 笔记本(主机)、主机虚拟机(Windows、Ubuntu)、手机(笔记本热点),三者进行相互ping通
  • 初始MyBatis
  • LabVIEW 2025 安装攻略(附图文教程)适用于测试与自动控制领域
  • MySQL 查询性能优化与索引失效问题全解析
  • 使用公众号的消息模板给关注用户发消息
  • MySQL CONV()函数
  • spring webflux链路跟踪【traceId日志自动打印】
  • 移动端 WebView 调试实战 深色模式样式失效与主题切换异常排查指南
  • 前端1.0
  • Lua语言程序设计1:基础知识、数值、字符串与表
  • 针对软件定义车载网络的动态服务导向机制