Qt的窗口(二)

Qt的窗口(二)

🌟🌟hello,各位读者大大们你们好呀🌟🌟

🚀🚀系列专栏:【Qt的学习】

📝📝本篇内容:窗口状态栏;浮动窗口;QDialog;自定义对话框;纯代码的方式来自定义QDialog界面;图形化方式自定义QDialog界面

⬆⬆⬆⬆上一篇:Qt的窗口(一)

💖💖作者简介:轩情吖,请多多指教(>> •̀֊•́ ) ̖́-

1.窗口状态栏

接下来要说的是窗口的状态栏,主要是用来提示一些信息什么的,用法也比较简单。我们直接举代码的例子

状态栏和菜单栏一样,如果创建项目的时候,勾选了ui文件,就会存在

showMessage是一个显示临时消息的函数,第二个参数可以控制显示时长,如果不传递这个参数,就是一直显示。不过这个显示临时消息的优先级比较高,所以说后面设置其他内容时,最好别使用,否则会覆盖整条状态栏别的内容,接着往后看。

我们也可以将控件设置进状态栏中,并且还能设置拉伸系数,拉伸系数之前在布局管理器讲过。

这里我们又添加了进度条和按钮,但是我们按钮的添加可不一样,它是从右往左添加的

函数声明 函数说明
void addPermanentWidget(QWidget *widget, int stretch = 0); 从右往左添加控件
void addWidget(QWidget *widget, int stretch = 0); 从左往右添加控件

2.浮动窗口

浮动窗口其实就是一个小窗,类似于我们弹窗出来让你点确实或取消的窗口,在Qt中我们也可以使用

看上去可能比较复杂,一步步理解

首先我们得创建浮动窗口就比较好理解,而且ui文件并不会包含,因此需要自己创建

然后最主要的就是我们想要在QDockWidget中想要创建控件,就必须要一个额外的QWidget才行,我们将各种控件都创建在QWidget中,方法和在正常的窗口差不多,就是参数从this变成了qwidget,最后qwidget设置进dockwidget即可

最后我们的浮动窗口也可以像工具栏一样设置停靠位置

3.QDialog

QDialog是一个对话框,我们针对一个已有的项目,也可以创建一些类,继承自QDialog实现咱们自定义的对话框。同时我们Qt也提供了很多现成的对话框,比如内置的对话框有:QFileDialog(文件对话框)、QColorDialog(颜色对话框)、QFontDialog(字体对话框)、QInputDialog(输入对话框)、QMessageDialog(消息对话框)。如果在创建项目的时候直接选择父类是它的话,其实创建出来后的界面其实和QWidget差不多

主要的不同点就是问号,QMainWindow和QWidget是缩放窗口

当然它的结构也不一样了
但是在我们一般使用QDialog的时候往往不是直接在创建项目的时候继承自Dialog。而是在代码中,创建额外的类,让额外的类继承自QDialog。因为我们的主窗口一般不会作为一个对话框,主窗口可以一些其他的对话框。

举一个简单的例子,通过一个按钮来创建一个新的对话框

我们按了两次按钮,所以说可以看到我们界面上有两个对话框。这也就是意味着每次按下按钮都会创建一个新的QDialog对象,并显示出来,这样就导致了会出现内存泄漏。你会疑惑说不是将QDialog对象已经挂到对象树上了吗?确实会在最后QMainWindow销毁的时候

一并销毁,但是假设你点了无数次按钮,点击了关闭按钮后,内存没有释放,这就会导致内存不足。所以说在我们点击关闭按钮后,内存就应该释放。

那我们直接使用delete吗?肯定不可以,这样只会使得对话框弹出来一瞬间又立马消失了,正确的做法应该是把delete和关闭的按钮的点击信号关联起来,用户点击×的时候,触发delete,但是Qt也提供了更简单的设置属性来完成上面的操作,即Qt::WA_DeleteOnClose

4.自定义对话框

我们想要创建自定义对话框,就需要继承自QDialog创建类

4.1.纯代码的方式来自定义QDialog界面

使用纯代码的方式来自定义对话框就需要首先创建一个类


可能会有bug,需要创建完后手动添加,之前讲过

创建完后就可以写代码了。思路是在dialog相关文件中设置相关的控件以及属性,和平时在窗口上设置是差不多的,然后在mainwindow中创建并设置Dialog




4.2.图形化方式自定义QDialog界面

既然是图形化方式,那就必须要有ui文件



其实剩下的就是在ui文件中拖拽控件,代码部分就和之前的是一样的,不过多解释,直接上代码






🌸🌸Qt的窗口(二)大概就讲到这里啦,博主后续会继续更新更多Qt的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!如有小伙伴需要Qt的安装包可以私信我,你们的支持是博主坚持创作的动力!💪💪

相关推荐
名字还没想好☜7 小时前
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式
开发语言·数据库·python·字符串格式化·f-string
·薯条大王8 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
一壶浊酒..11 小时前
Scrape Webpack练习
开发语言·javascript·webpack
命运之光11 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
命运之光11 小时前
【C语言完整代码】图书管理系统:图书馆场景下的增删改查实战
c语言·开发语言
猿长大人12 小时前
C# | Serilog 新手入门
开发语言·c#·.net·log
hansang_IR12 小时前
【题解】LC:倍增 / 区间并查集(Range Parallel Unionfind)
c++·算法·并查集
东东最爱敲键盘12 小时前
day7.c++继承
c++
在世修行13 小时前
从零打造 C# 工业视觉检测系统(七):串口通信 SerialPort 封装与开发
开发语言·c#·modbus rtu·rs232/rs485
沫璃染墨13 小时前
《从零入门Linux系统篇(十五):系统工具篇·六——GDB调试器详解:从程序执行控制到高级调试技巧》
linux·运维·服务器·c语言·c++