验证布局中控件的父窗口

验证布局中的控件的父窗口

  • 概述
  • 示例
    • 开发环境
    • 项目
    • 运行结果
  • 结论
  • 番外

概述

平时在创建一个窗口类的子空间时,一般需要先创建布局,将子控件添加到窗口的布局中。子控件没有显示的指定父窗口时,那么这个布局中的控件的父窗口是布局还是这个窗口类呢。
本文围绕这个问题展开验证。采用一个简单的小程序。
下面要实现的小程序,其窗口类中有一个布局,布局中添加了一个控件。大体结构如下图所示。
在这里插入图片描述

示例

开发环境

在QtCreate4.11.2,基于qt 5.14.2的界面应用程序。

项目

main.cpp

#include "dialog.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Dialog w;w.show();return a.exec();
}

dialog.h

#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACEclass Dialog : public QDialog
{Q_OBJECTpublic:Dialog(QWidget *parent = nullptr);~Dialog();
protected:void initUi();
private:Ui::Dialog *ui;
};
#endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"
#include <QPushButton>
#include <QHBoxLayout>
#include <QString>
#include <QDebug>Dialog::Dialog(QWidget *parent): QDialog(parent), ui(new Ui::Dialog)
{ui->setupUi(this);initUi();createJsonFile();readJsonFile();
}Dialog::~Dialog()
{delete ui;
}
void Dialog::initUi()
{QPushButton *pBtn = new QPushButton("hdu");QHBoxLayout *hLayout = new QHBoxLayout(this);hLayout->addWidget(pBtn);QObject *layoutParent =hLayout->parent();QObject* btnParent = pBtn->parent();if(btnParent == (QObject*)hLayout){qDebug("=====layout is btn's parent!");}char str[20]={0};char *p = str;sprintf(str, "0x%x", (unsigned int)btnParent);QString strAddress = QString::fromUtf8(p);qDebug("btn parent address:%s",qPrintable(strAddress));//0xa4d4f990sprintf(str, "0x%x", (unsigned int)hLayout);QString strLayoutAddress = QString::fromUtf8(p);qDebug("layout address:%s",qPrintable(strLayoutAddress));//0xf1f7d7c0sprintf(str, "0x%x", (unsigned int)layoutParent);QString strLayoutParentAddress = QString::fromUtf8(p);qDebug("layout parent address:%s",qPrintable(strLayoutParentAddress));//0xa4d4f990
}

运行结果

在这里插入图片描述

结论

由上面的运行结果可知:添加到布局中的控件的父控件是其所在布局的父窗口,即当前的窗口类。

番外

作者创建控件的时候未指定父对象,然后将其加入到布局中。根据qt对象树(其内存管理机制),当前类的子控件是没有必要手动去释放的,即调用delete去删除控件的,因为作者认为创建的子控件虽没有显示指定其父对象,但是布局是当前类的,子控件又加入了布局,故而子控件也归当前类所属,子控件的父窗口为子控件所加入的布局的父窗口。此为验证布局中的控件其父对象,不需要手动释放加入窗口类布局的子控件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Centos6.8安装Nginx+域名转发

2分钟搭建企业轻量级反向代理服务器 文章目录一、linux 环境 安装nginx二、需求分析下载/解压/启动tomcat2.1 需求分析2.2 Linux环境下载和配置Tomcat三、nginx域名转发场景13.1 编辑nginx配置文件3.2 创建配置文件中的目录3.3 创建一个配置文件四、编辑配置文件添加映射信息4.…

手机有一个时钟的标志_STM32F7系统配置控制器(SYSCFG)及复位和时钟控制(RCC)...

这篇文章带大家看一下STM32F7的系统配置控制器。系统配置控制器主要用于&#xff1a;1、 选择以太网PHY接口&#xff1b;2、 交换FMC SDRAM存储区域与NOR/PSRAM存储区域&#xff1b;3、 管理GPIO外部中断线连接&#xff1b;在系统控制寄存器里有一个bit位来选择使用哪个选项字定…

Nignx负载均衡

2分钟搭建企业轻量级负载均衡服务器 文章目录一、启动2个tomcat端口为8080和8081二、在/usr/local/nginx/conf/vhost创建static.imooc.com.conf文件一、启动2个tomcat端口为8080和8081 二、在/usr/local/nginx/conf/vhost创建static.imooc.com.conf文件 内容如下&#xff1a;…

qt中QDoubleSPinBox设置其指定的样式及带单位

概述 本文旨在记录使QDoubleSpinBox呈现出行编辑器QLineEdit的效果&#xff0c;又不使其失去鼠标选中当前的QDoubleSpinBox后滚轮滚动增加减少其值的特性。这里选中的控件还是QDoubleSPinBox,在样式设置上使其呈现行编辑的效果&#xff0c;功能上继续保持滚轮滚动的时候数值增…

IEEE 回应禁止华为系审稿人;WiFi联盟、蓝牙联盟已恢复华为成员资格;中国计算机学会:暂时中止与IEEE通信学会合作……...

戳蓝字“CSDN云计算”关注我们哦&#xff01;嗨&#xff0c;大家好&#xff0c;重磅君带来的【云重磅】特别栏目&#xff0c;如期而至&#xff0c;每周五第一时间为大家带来重磅新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我重磅君吧&#xff01;重…

VM安装CentOS6.8虚拟机

1分钟安装CentOS6.8虚拟机 文章目录1. 检查BIOS虚拟化支持(可以先执行第二步&#xff0c;如果不支持再回来设置)2. 新建虚拟机3. 新建虚拟机向导4. 创建虚拟空白光盘5. 安装Linux系统对应的CentOS版6. 虚拟机命名和定位磁盘位置7. 处理器配置&#xff0c;看自己是否是双核、多核…

Lombok快速入门

Lombok快速入门 文章目录一、Lombok介绍&#xff1a;1.1 Lombok优点&#xff1a;1.2 lombok 依赖引入1.3 lombok 插件安装二、常用注解2.1 Getter and Setter2.2 ToString2.3 EqualsAndHashCode2.4 NoArgsConstructor2.5 AllArgsConstructor2.6 Slf4j2.7 Builder、2.8 Data2.92…

图片夹_各种变调夹的优缺点、原理和使用方法

变调夹(capo)是吉他弹奏中很重要的一部分&#xff0c;演奏者可以用它来很方便的调整吉他的音调&#xff0c;在民谣弹唱中&#xff0c;如果吉他为标准调弦(EADGBE)&#xff0c;当弹唱比较常见的D调的歌曲如《成都》时&#xff0c;只需用变调夹夹在二品&#xff0c;演奏者就可以用…

朋友,你实现荔枝自由了吗? | Alfred数据室

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a; AlfredWu转自&#xff1a;Alfred数据室Alfred已经有四年没有在广东生…

tomcat9控制台中文乱码

1、找到${CATALINA_HOME}/conf/logging.properties2、找到java.util.logging.ConsoleHandler.encoding UTF-83、 修改为java.util.logging.ConsoleHandler.encoding GBK 3、重启tomcat。

idea控制台输出乱码

2分钟搭建企业轻量级负载均衡服务器 文章目录1. 修改配置文件2. tomcat启动参数&#xff1a;3. 统一编码格式1. 修改配置文件 打开IntelliJ IDEA本地安装目录中bin文件夹下的idea.exe.vmoptions和idea64.exe.vmoptions这两个文件 分别在这两个文件内容的末尾添加&#xff1a;…

数据可视化图表,你选对了吗?

戳蓝字“CSDN云计算”关注我们哦&#xff01;Photo by Jason Coudriet on Unsplash文 | 邻川来源 | 阿里巴巴中间件程序员懂画图&#xff0c;一宝变三宝。继上期「阿里程序员小技巧」中&#xff0c;阿里巴巴技术专家三画分享了他关于《如何画好架构图》的经验&#xff0c;本期&…

使用IDEA 1分钟搭建运行SpringMVC项目

使用IDEA 1分钟搭建运行SpringMVC项目 文章目录一、项目搭建1.1. 新建项目1.2. 选择maven项目构建1.3. 设置组织名和模块名称1.4 . 选择本地maven仓库1.5 . 项目名和存放的位置1.6 . 开启自动下载依赖1.7. 搭建项目完成&#xff01;&#xff01;&#xff01;二、项目运行2.1. 显…

ARM 发布新一代 CPU 和 GPU,实现 20% 性能提升!

戳蓝字“CSDN云计算”关注我们哦&#xff01;整理 | 郭芮出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;作为全球知名的芯片设计企业&#xff0c;ARM 踩着一年一度即将开幕的台北电脑展&#xff08;Computex 2019&#xff09;热潮推出了新一代产品。据外媒 Ventur…

Git仓库初始化_企业级开发原则

Git仓库初始化_企业级开发原则 文章目录1. 在远程github创建仓库2. 在本地创建README.md测试WIKI文件3. 创建.gitignore文件4. 初始化git仓库5. 工作区变更文件添加至暂存区6. 文件提交至本地仓库7. 连接远程仓库8. 将本地仓库变更文件推送至远程9. 开发原则分支开发&#xff0…

Unix风雨五十年:老兵远去,新秀崛起

戳蓝字“CSDN云计算”关注我们哦&#xff01;文 | 姜洪军Unix?这是多老的一个传说啊!年轻一代的很多人似乎都没听说过。不过&#xff0c;微软的Windows NT、开源的Linux、谷歌的安卓、苹果的iOS&#xff0c;大家不陌生吧&#xff1f;其实这些都带着Unix的基因&#xff0c;我们…

Mybatisplus代码生成 之SpringBoot适配MYSQL和ORACLE

Mybatisplus代码生成 之SpringBoot适配MYSQL和ORACLE 文章目录前期准备&#xff1a;看图操作&#xff0c;一路下一步1. 导入相关依赖2. 新建代码生成类MysqlGenerator2.1. MYSQL 代码生成部分2.2. ORACLE代码生成部分3. 创建全局配置文件4. 启动类加MapperScan注解5. 在control…

360浏览器网页走丢了_超酷!Win10 正式版全新 UI 界面,全球第二大浏览器上线...

5月10日消息&#xff0c;微软今年首个 Windows 10 正式版将捆绑并换上全新的 Edge 浏览器&#xff0c;目前微软已向预览通道用户推送了 KB4559309 独立更新补丁&#xff0c;该补丁更新后将自动替换旧版 Edge 浏览器。撰文&#xff5c;XL科技说此前微软曾确认今年首个 Windows 1…

MP 启动注入 SQL 原理分析

MP 启动注入 SQL 原理分析 文章目录一、MybatisPlus需要sql语句吗&#xff1f;解答&#xff1a;需要1.1. 问题&#xff1a;为什么MybatisPlus看不到sql语句&#xff1f;1.2. 分析&#xff1a;继承关系1.3. 假设&#xff1a;操作数据库一定有sql二、通过现象看本质2.1. 测试案例…

虚拟化精华问答 | 为什么云计算需要虚拟化?

虚拟化是一种资源管理技术, 是将计算机的各种物理资源, 如服务器、网络、内存及存储等&#xff0c;予以抽象、转换后呈现出来&#xff0c;打破物理设备结构间的不可切割的障碍&#xff0c;使用户可以比原本的架构更好的方式来应用这些资源。这些资源的虚拟部分是不受现有资源的…