验证布局中控件的父窗口

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

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

概述

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

示例

开发环境

在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;看自己是否是双核、多核…

cbrt c语音_C语言有哪些鲜为人知的特性?

本文由 伯乐在线 - Lingfeng Ai 翻译自 Quora。未经许可&#xff0c;禁止转载&#xff01;欢迎加入&#xff1a;技术翻译小组&#xff0c;或分享原创到伯乐头条。译注&#xff1a;本文摘编自 Quora 的一个热门问答贴。 请在linux系统下测试本文中出现的代码switch语句中的case …

QString中文字符串中指定字符的查找

中文字符串指定字符查找场景示例运行环境示例代码代码讲解难点重点场景 在一个QString类型的中文字符串中查找一个指定的中文字符串&#xff0c;找到该指定的中文字符串后&#xff0c;返回其找到的下标位置&#xff0c;判断下标位置向前一位的字符是否为指定的字符。 示例 运…

强强联手 SAP Ariba与苏宁易购共建中国企业智慧采购

2019年5月30日&#xff0c;南京讯— SAP Ariba&#xff08;采购云&#xff09;联合苏宁易购共同宣布达成战略合作关系&#xff0c;苏宁易购成为SAP Ariba Spot Buy&#xff08;零星采购&#xff09;业务在中国大陆地区的合作伙伴。双方将利用SAP与苏宁集团的全业态资源&#xf…

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;演奏者就可以用…

double类型的变量与0的对比

double类型变量与0比较概述实现double类型概述 日常总是会遇到double类型变量与0之间的比较。非严格情况下直接与0比较了&#xff0c;但实际上这是一种错误的写法。double为双精度类型&#xff0c;其一般保留15为小数。而Flaot单精度类型一般保留6为小数。故而不能直接与0进行…

朋友,你实现荔枝自由了吗? | 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。

一个事物两个方面的对比举例_作比较的句子大全简短-对比的句子什么比什么重要-什么和什么做比较的句子...

对比是修辞方法,就是把两种不同事物或者同一事物的两个不同方面放在一起相互比较的一种辞格。 对比的句子你能举出两个这样的例子吗?这样写有什幺好 鳕鱼一次产卵竟达千万粒,真正能变成幼鱼的卵可能还不到1%。 列数字:准确,有科学根据 打比方:天上的星星像一颗颗宝石。 作…

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…