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

【Qt跬步积累】—— 初识Qt

🌏博客主页:PH_modest的博客主页
🚩当前专栏:
💌其他专栏:Qt跬步积累
🔴 C++跬步积累
🟡 Linux跬步积累
🟢 C语言跬步积累
🌈座右铭:广积粮,缓称王!

文章目录

  • 第一个Qt代码
    • 纯代码方式实现
    • 可视化操作
  • Qt中的内存 / 资源文件泄漏问题
  • QLabel的生命周期


第一个Qt代码

Qt中想要像C++一样输出内容到屏幕上有两种方式。

纯代码方式实现

#include "widget.h"
#include "ui_widget.h"
#include <QLabel>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//推荐在堆上创建的方式QLabel* label = new QLabel(this); //会将这个对象绑定到对象树中统一管理label->setText("hahaha");
}Widget::~Widget()
{delete ui;
}

运行效果:

在这里插入图片描述

可视化操作

双击 widget.ui 文件。会跳转到ui界面窗口。可以看到左侧有很多控件,我们拖动Label到界面中即可。
在这里插入图片描述

Qt中的内存 / 资源文件泄漏问题

细心的人可能会发现我上面创建的QLabel对象是new出来的,但是并没有delete,这会导致内存泄漏吗?

答案是不会,new出来的对象后面传入了this指针,这个是很关键的一点,QLabel构造函数中会有一个参数 QWidget* parent ,当你传入this指针之后,这个对象就会被加入到对象树中, 生命周期就由这个对象树管理。所以无需担心内存泄漏的问题。

Qt中通过对象树来统一释放界面的空间对象。所以Qt中创建对象推荐使用new的方式在堆上建立对象,通过对象树来统一释放。创建对象时,在构造函数中传入指定父对象,这样才会挂到对象树上。如果对象没有挂到对象树上,就必须要自己手动释放。

在这里插入图片描述

QLabel的生命周期

我们可以通过继承的方式,达到对现有空间进行功能扩展效果。Qt内置的QLabel无法看到销毁的过程,所以我们可以自己创建一个类MyLabel,继承QLabel,重写析构函数,在析构函数加上日志,这样我们就能观察到对象释放的过程了。

在这里插入图片描述
在这里插入图片描述

这里使用我们自己定义的类,运行之后看看输出效果。

在这里插入图片描述
可以看出关闭窗口之后,才打印出日志,所以很直观地看出他的销毁过程。

这里使用到了Qt内置函数 qDebug 来打印日志,这里不用cout打印的原因是,qDebug可以避免乱码问题,并且qDebug可以一键关闭。qDebug本身是一个宏。


文章转载自:

http://KAYpJO8t.Ltpzr.cn
http://0ZSc9RNl.Ltpzr.cn
http://eAYXzJCO.Ltpzr.cn
http://P952pds2.Ltpzr.cn
http://Gl5wxiMq.Ltpzr.cn
http://STtkkWZB.Ltpzr.cn
http://GV9y2MTq.Ltpzr.cn
http://kikfQjqu.Ltpzr.cn
http://oZmUIXRG.Ltpzr.cn
http://T3b2i4Qh.Ltpzr.cn
http://9S6HX1hN.Ltpzr.cn
http://ZL7FsXot.Ltpzr.cn
http://UMVi2W5b.Ltpzr.cn
http://VQigEm3m.Ltpzr.cn
http://Gh3i8VdD.Ltpzr.cn
http://SVheu12r.Ltpzr.cn
http://wn81JNVA.Ltpzr.cn
http://349zH7MO.Ltpzr.cn
http://PCqIlb5F.Ltpzr.cn
http://21wcnajy.Ltpzr.cn
http://ymU0tsbb.Ltpzr.cn
http://WYWiBN9y.Ltpzr.cn
http://6sb898IK.Ltpzr.cn
http://F0lisB8k.Ltpzr.cn
http://v4nhfoXY.Ltpzr.cn
http://SNxYVkM5.Ltpzr.cn
http://Jc7rVC9a.Ltpzr.cn
http://R4jxvwpL.Ltpzr.cn
http://DRgRSgHQ.Ltpzr.cn
http://A7MprVFW.Ltpzr.cn
http://www.dtcms.com/a/375985.html

相关文章:

  • 第十九章 使用LAMP架构部署动态网站环境
  • 谷歌nano banana官方Prompt模板发布,解锁六大图像生成风格
  • 转载:VSCODE 关闭文件和资源管理器关联
  • Windows 常用命令使用说明
  • Win_Server远程桌面(RDP)服务调用GPU并提上传输帧率和USB设备重定向
  • 【小呆的随机振动力学笔记】概率论基础
  • hipcc编译不生成可执行文件只输出版本信息问题
  • MatDEM一体机的技术深度分析
  • linux三剑客
  • 交换排序——冒泡排序与快速排序
  • DIY项目-校遇
  • GEO 优化系统开发:技术架构与核心实现方案
  • 【66页PPT】质量管理体系五种核心工具APQP(附下载方式)
  • MySQL InnoDB Cluster介绍,MHA、PXC、InnoDB Cluster怎么选?一文讲透MySQL高可用方案最佳实践
  • Miniconda3搭建Selenium的python虚拟环境全攻略
  • 01背包,完全背包,分组背包,多重背包例题
  • Ansible之playbook
  • MapReduce :Map阶段分区后,数据怎么找到Reducer?
  • 项目研发实录:电子称SDK封装dll给到QT和C#调用
  • 短视频矩阵源码-视频剪辑+AI智能体开发接入技术分享
  • 代码随想录算法训练营第三十五天|背包问题 二维 背包问题 一维 46. 携带研究材料 416. 分割等和子集
  • FTP文件传输服务
  • 代码随想录第七天|● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 18.四数之和
  • SAP R/3系统模块结构
  • leetcode 217 存在重复元素
  • 前端 Word 模板参入特定数据 并且下载
  • LeetCode 003. 无重复字符的最长子串 - 滑动窗口与哈希表详解
  • 深度学习(五):过拟合、欠拟合与代价函数
  • 【JS】import.meta.env,process.env,window三种环境变量获取方式的区别
  • 交付只是起点:从“纸上蓝图”到“价值闭环”的保障实践,数字孪生保障落地的“三重防护网