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

QT学习_03_坐标系统和内存回收机制

1 坐标系统

Qt的坐标系统很简单,左上角是原点,x轴是向右递增。Y轴是向下递增。

最外面的那个窗口(主窗口,父窗口),原点是屏幕的左上角。

而在主窗口中添加的子窗口,原点是父窗口的左上角。

mywidget.cpp

#include "mywidget.h"
#include <QPushButton>
myWidget::myWidget(QWidget *parent)
    : QWidget(parent)
{
    this->resize(800,800);
    /* 对于父窗口(主窗口),坐标系统相对于屏幕
     * 原点,相对于屏幕左上角
     * X:往右递增
     * Y:向下递增
     */
    this->move(100,100);


    /* 子窗口,坐标系统相对于父窗口
     * 原点,相对于父窗口空白区域左上角(不包括边框)
     * X:往右递增
     * Y:向下递增
     */
    QPushButton *b1 = new QPushButton(this);
    b1->move(200,200);
    b1->setText("^_^");
    b1->resize(400,400);

    // b2是以b1为父窗口,所以它的坐标系统是基于b1的, 原点也是b1的左上角
    QPushButton *b2 = new QPushButton(b1);
    b2->move(50,50);
    b2->setText("@_@");
    b2->resize(100,100);

}

myWidget::~myWidget()
{
}

运行结果

 

2 Qt内存回收机制

上面的例子,我们创建了两个按钮, 都是动态分配的空间。

对于c++而言,如果不释放这个空间就会导致内存泄漏。

画成对象树,就是长这个样子

 

Qt的内存释放机制就是:

1)指定父对象后、2)直接或间接继承于QObject

子对象如果是动态分配空间的(new),不需要手动释放(delete)

系统会自动释放

比如按钮: QPushButton继承于QAbstractButton继承于QWidget继承于QObject。

也就是说,上面的例子中,b1,b2都是系统自动释放。

这个事情说明,指定父对象非常的关键

 感谢您的阅读,欢迎留言讨论、收藏、点赞、分享。

相关文章:

  • cookies,session,token都是相对安全,并不能完全防窃取
  • 在Ubuntu22.04条件下,如何打开树莓派4B的串口
  • 初识Docker
  • PMP每日一练 | 考试不迷路-10.29(包含敏捷+多选)
  • SSL证书验证原理和https加密
  • Python实现秒杀抢购某宝商品,不再害怕双十一抢不到了
  • 瞪羚优化算法(Gazelle Optimization Algorithm,GOA)
  • CSS3入门
  • 【SQL优化】海量数据大页码MySQL查询该如何优化
  • 乐吾乐le5le-Topology为智慧水务可视化赋能(一)
  • 【node进阶】深入浅出---MVC设计模式RESTful风格
  • java计算机毕业设计基于精细化考核的离散数学课程教学目标达成系统源码+系统+数据库+lw文档
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • 刚入职如何快速熟悉需求并输出测试用例?
  • R语言和医学统计学(5):多因素方差分析
  • hexo+github搭建个人博客
  • Apache的80端口被占用以及访问时报错403
  • Apache的基本使用
  • C# 免费离线人脸识别 2.0 Demo
  • C++入门教程(10):for 语句
  • CentOS7简单部署NFS
  • cookie和session
  • Debian下无root权限使用Python访问Oracle
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Js基础知识(四) - js运行原理与机制
  • ng6--错误信息小结(持续更新)
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Odoo domain写法及运用
  • passportjs 源码分析
  • tab.js分享及浏览器兼容性问题汇总
  • Twitter赢在开放,三年创造奇迹
  • vue-cli在webpack的配置文件探究
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 第十八天-企业应用架构模式-基本模式
  • 来,膜拜下android roadmap,强大的执行力
  • 前端性能优化--懒加载和预加载
  • 前嗅ForeSpider采集配置界面介绍
  • 什么软件可以提取视频中的音频制作成手机铃声
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #define、const、typedef的差别
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (2.2w字)前端单元测试之Jest详解篇
  • (4)(4.6) Triducer
  • (6)添加vue-cookie
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (vue)页面文件上传获取:action地址
  • (二)斐波那契Fabonacci函数
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (转载)虚函数剖析
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .NET应用架构设计:原则、模式与实践 目录预览
  • ;号自动换行