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的安装包可以私信我,你们的支持是博主坚持创作的动力!💪💪

相关推荐
艾莉丝努力练剑5 小时前
【QT】信号与槽
linux·开发语言·c++·人工智能·windows·qt·qt5
雨季6665 小时前
Flutter 三端应用实战:OpenHarmony “极简安全文本对齐调节器”
开发语言·前端·javascript·安全·flutter·交互
草莓熊Lotso5 小时前
脉脉独家【AI创作者xAMA第二期】| 从拼图游戏到AI设计革命
android·开发语言·c++·人工智能·脉脉
高-老师5 小时前
基于R语言的贝叶斯网络模型的实践技术应用;R语言实现Bayesian Network分析的基本流程
开发语言·r语言·贝叶斯网络
William_cl6 小时前
C# ASP.NET路由系统全解析:传统路由 vs 属性路由,避坑 + 实战一网打尽
开发语言·c#·asp.net
一起养小猫8 小时前
Flutter for OpenHarmony 实战:打造天气预报应用
开发语言·网络·jvm·数据库·flutter·harmonyos
安全二次方security²8 小时前
CUDA C++编程指南(7.25)——C++语言扩展之DPX
c++·人工智能·nvidia·cuda·dpx·cuda c++编程指南
xyq20248 小时前
Java 抽象类
开发语言
爱装代码的小瓶子8 小时前
【c++与Linux基础】文件篇(4)虚拟文件系统VFS
linux·开发语言·c++