【Qt】 对象树 与 乱码问题

news2024/9/23 1:37:16

文章目录

  • 1. 对象树
    • 在堆上开辟空间 并管理
    • 栈上开辟 与 堆上开辟 的区别
  • 2. 乱码问题的解释
    • 编码方式的区分
    • 出现乱码的原因
    • 查看当前文件的编码方式
    • 如何处理 文件与 终端 编码方式 不统一

1. 对象树

在堆上开辟空间 并管理

该代码只进行new(在堆上开辟空间) 而没有delete 正常来说是会造成 内存泄露的问题
但是在Qt中 将 new后创建对象的生命周期 交给 对象树统一管理


假设存在这样的界面 窗口为 QWiget 对象
在界面中 包含其他的元素
通过对象树来进行表示


Qwidget 作为 根节点
其中包含几个子节点 分别为 QLabel QPushButton QListWidget 三个 对象
在 QListWidget中 包含 若干个 QListltem

通过这个树形结构 就把界面上要显示的控件 都组织起来了
使用对象树 把这些内容组织起来 目的是为了能够在合适的时机(窗口关闭/销毁) 把这些对象统一进行释放


栈上开辟 与 堆上开辟 的区别

当把对象改成在栈上创建 此时就可以看到 运行起来的程序 无法显示出 hello world
此时的 label 对象 随着 构造函数的结束 就销毁了
所以更推荐在堆上创建的方式


2. 乱码问题的解释

编码方式的区分

在计算机中 一个汉字 占有几个字节?

需要先判断当前 中文编码使用的是那种字符集
日常的常用字为 4k 左右
加上各种生僻字 总数为 6w 左右
使用一个大表格 给每个汉字 分配一个整数即可


表示汉字的字符集 主要分为 两种方式:
1. GBK (中国大陆)
使用两个字节表示一个汉字 windows简体中文版 默认的字符集是 GBK

2. UTF-8 /utf8
变长编码 表示一个符号 使用的字节数有变化
在utf8中 一个汉字 一般表示 3个 字节
Linux 中 默认 就是 utf8


出现乱码的原因

出现乱码的原因 : 编码方式不匹配
若字符串本身 是 utf8编码的 但是终端是按照 GBK的方来进行解析 显示 此时就会出现乱码
( utf8的数值 查询 GBK的码表 )


查看当前文件的编码方式

点击.cpp文件 并在 Explorer中显示


点击.cpp文件 选择编辑


点击文件 选择另存为


若显示 UTF-8 则说明这个文件 为 UTF-8 编码
若显示 ANSI 则说明这个文件 为 GBK 编码


如何处理 文件与 终端 编码方式 不统一

Qt中 存在 QString 可以帮助我们自动处理编码方式
同时 Qt中提供了 专门用来 提供打印日志的工具 —— qDebug() 也能自动处理编码方式


当使用 C++的 std去打印时 发现结果会出现乱码 即编码方式 不统一
(文件为 UTF-8编码方式 而终端不为 UTF-8编码方式)


QDebug 是 Qt中的一个类 但是又不会直接使用这个类
qDebug() 是一个 宏 封装了 QDebug 对象
qDebug() 可以当作 cout 来使用


qDebug() 能自动处理编码方式 所以此时编码方式一致 就能输出正常的汉字了

若在Qt中 想通过打印日志的方式 输出一些调试信息 优先使用 qDebug()
同时 qDebug() 还可以对 打印的调试日志 统一进行关闭


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

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

相关文章

ES系列二之CentOS7安装ES head插件

CentOS7安装ES head插件 附:Centos7中安装Node出现Cannot find module ‘…/lib/utils/unsupported.js‘问题 删除原本的的npm连接,重新建一个即可。 1、先cd到该node版本中的bin文件夹下,这里装的是12.16.2版本: cd /usr/local/soft/nod…

C语言 之 字符串函数strncpy、ctrncat、strncmp函数的使用

文章目录 strncpy函数的使用strncat函数的使用strncmp函数的使用 strncpy函数的使用 函数原型: char * strncpy ( char * destination, const char * source, size_t num); strncpy与strcpy的区别是,strncpy可以控制需要拷贝的字符数量 1.能够拷贝num个…

为什么使用HTTPS?

HTTPS现在是所有Web活动的首选协议,因为它是用户保护敏感信息的最安全方式。 HTTPS不仅对请求用户信息的网站至关重要。除了用户直接发送的信息外,攻击者还可以从不安全的连接中跟踪行为和身份数据。 HTTP为网站所有者带来的好处除了数据安全之外&…

【Linux网络编程入门】Day5_socket编程基础

socket 编程基础 Linux 下的网络编程:socket 编程; socket是内核向应用层提供的一套网络编程接口,用户基于 socket 接口可开发自己的网络相关应用程序。 ⚫ socket 简介 ⚫ socket 编程 API 介绍 ⚫ socket 编程实战 socket 简介 ​ 套…

微信小程序引入全局环境变量

有时候一套代码要在多个小程序appId下使用,其中又有一些数据(文字)需要做区分.可以使用下面的方法 把要配置的数据以export default 形式导出 在app.js中,引入project.config.0.js文件,将导出的数据放在globalData中 在页面目录中,即可利用getApp()方法使用全局变量 也可以放数…

LM4863 带立体声耳机功能的双 2.2W音频功率放大器芯片IC

一般概述 LM4863是双桥接的音频功率放大器。当电源电压为5V时,在保证总谐波失真、噪声失真之和小于1.0%的情况下,4Ω负载提供2.2W的输出功率或者可向3Ω负载提供2.5W的输出功率。另外,当驱动立体声耳机时,耳机输入端允许放…

微服务:分布式事务

💥 该系列属于【SpringBoot基础】专栏,如您需查看其他SpringBoot相关文章,请您点击左边的连接 目录 一、引言 二、Seata 三、部署TC服务 1. 准备数据库表 2. 准备配置文件 3. Docker部署 四、微服务集成Seata 1. 引入依赖 2. 改造配…

json 库的下载与使用

Json 简介Json下载Json::Value 数据对象类Json 序列化/反序列化的介绍Json 的序列化类低版本高版本 Json 的反序列化类低版本高版本 Json序列化操作Json反序列化操作 简介 json 是一种数据交换格式,采用独立于编程语言的文本格式来存储和表示的数据。 Json下载 使…

波导阵列天线单元 学习笔记3 基于空气填充双模馈网的双圆极化膜片天线阵列

摘要: 此通信提出了一种使用空气填充双模馈网的基于膜片极化器的双圆极化天线阵列。一种1分4的圆腔单层覆盖在膜片极化器上来抑制栅瓣。全公司馈网被一个双模传输线所实现,以此在一组馈网内联合了TEM模式(由HW悬架线激励)和TE10模…

Stable Diffusion赋能“黑神话”——助力悟空走进AI奇幻世界

《黑神话:悟空》是由游戏科学公司制作的以中国神话为背景的动作角色扮演游戏,将于2024年8月20日发售。玩家将扮演一位“天命人”,为了探寻昔日传说的真相,踏上一条充满危险与惊奇的西游之路。 同时,我们还可以借助AI绘…

智能电子班牌源码之终端管理-SAAS本地化及未来之窗行业应用跨平台架构

一智能电子班牌 智能电子班牌为教育行业量身打造,高清显示屏体、可安装各类软件,满足门禁、考勤、信息显示等多种功能。节能防水防误触设计,更适用于校园环境。 二、设备管理 1. 提高效率:管理员无需亲临设备现场,…

Maven-03.idea集成-配置及创建maven项目

一.配置Maven 写在前面:特别注意idea版本与Maven版本以及jdk版本与Maven版本的匹配问题。一定要下载和当前idea版本以及jdk版本匹配的maven版本,否则会出问题。具体匹配结果上网查询!此处采用idea2023.2.3,jdk17,mave…

edge浏览器可以,chrome浏览器看不到接口数据

chrome 谷歌浏览器,可以看到页面,F12的开发者工具看不到返回数据 无法加载响应数据: No data found for resource with given identifier Chrome 将显示 ERR_INTERNET_DISCONNECTED 错误 edge浏览器是正常的。 哈哈哈哈哈哈,这里误点了&a…

C ++初阶:类和对象(上)

目录 🌞0.前言 1. 面向过程和面向对象初步认识 2..类的引入与定义 2.1类的引入 2.2类的定义 3.类的访问限定符及其封装 3.1访问限定符 3.2封装 4.类的作用域 4.1加餐和发现 5.类的实例化 6.类对象大小的计算 6.1.内部的存储方式 6.2结构体对齐规则回顾…

【闪送-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

【办公软件】安全风险 Microsoft 已阻止宏运行,因为此文件的来源不受信任

Excel 2019版本,就出现安全风险 Microsoft 已阻止宏运行 因为此文件的来源不受信任的问题,宏直接就用不了了。 网上的解决方法,文件右键属性->取消安全锁。但存在没有安全锁这个选项。后查询到一个简单的解决方法。 打开Excel表格->文件…

利用MongoDB进行数据治理,防范构建生成式AI应用程序时的潜在安全风险

生成式人工智能(生成式AI)正在蓬勃发展,许多企业和初创公司正在运用AI工具来解决各自的用例问题。随着企业逐渐适应市场上的新技术范式转移,开发者社区和开源模型也在不断发展壮大。 构建智能生成式AI应用程序需要灵活运用数据。…

R语言统计分析——线性模型假设的综合验证与多重共线性

参考资料:R语言实战【第2版】 1、线性模型假设的综合验证 gvlma包中的gvlma()函数,能对线性模型进行综合验真,同时还能做偏斜度、峰度和异方差性的评价。也就是说,它给模型提供了一个单独的综合验证(通过/不通过&…

RK3568平台开发系列讲解(UART篇)line discipline

🚀返回专栏总目录 文章目录 一、UART 读写过程二、line discipline组成沉淀、分享、成长,让自己和他人都能有所收获!😄 line discipline 介于 TTY 层和具体的串口驱动 ( 比如 serial8250 ) 之间。 一、UART 读写过程 发送数据时: 应用程序通过系统调用向 TTY 设备文件写…

打卡学习Python爬虫第四天|bs4爬取优美图库的小清新图片

bs4解析比较简单,通过HTML的标签和属性去提取值,find(标签,属性"值") 但是需要了解HTML的语法知识,然后再使用bs4去提取,逻辑和编写难度就会比较简单和清晰。 bs4如何使用?如有如下HTML代码&am…