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

Qt:3.项目创建、对象树、乱码问题、Qt命名规则

目录

1.创建项目:

2.Qt可以支持两套基础类:

3.节点的父子关系和对象树:

4.QLabel类:

5.乱码问题:

6.Qt命名规则:


1.创建项目:

  • qt的项目中有一个以.ui为后缀的文件,他本质是一个xml文件。
  • qt中使用F4切换头文件和对应的源文件。
  • 编写一个项目,有两种实现方式,一种是直接拖拽控件到设计页面,另一种通过纯代码的方式创建控件。
  • 代码构造界面:将代码放到widget的构造函数中。
  • 上古时期的qt使用小写风格的头文件声明风格(后面带.h后缀),在1998年C++标准成立。更改了原来的头文件风格,就是首字母大写,不加.h后缀的头文件风格。
  • 控件可以创建在堆上也可以创建在栈上。建议创建在堆上,建立在堆上时,参数要传递当前this指针,可以给新对象指定其父对象。
  • 以QLabel类举例:创建在堆上:QLabel l1=new QLabel(this);创建在栈上:QLabel l2;

2.Qt可以支持两套基础类:

  • Qt 支持 C++ 的标准模板库(STL),并且 Qt 自己也实现了一套封装库,提供了类似的容器类和算法。这些 Qt 自己的类在很多情况下可以替代 STL,提供了一些额外的功能和更好的集成。
  • Qt 的这些容器类通常与 Qt 的信号和槽机制更好地集成,并且在跨平台应用中有更好的兼容性。建议使用这些 Qt 提供的容器类,而不是 STL 容器。
  • Qt版本的基础类在创建时,要大写Q和类的首字母。以vector举例:std::vectot<int>和QVector<int>。

3.节点的父子关系和对象树:

  • 在Qt中,创建在堆上的对象,即使不手动释放,也不会造成内存泄漏。这些对象会在合适的时候被自动释放掉。原因是:对象被挂在了对象树上。
  • 对象树本质是一个多叉树,它可以将前端界面上的各个元素组织起来。
  • 对象树的各个节点之间会存在父子关系,子对象如果认定一个其他对象为父对象,那么父对象被销毁时,它的所有子对象也会自动被销毁。这种机制确保了资源的自动释放,避免了内存泄漏。
  • 在子对象构造时,通过初始化列表将当前this指针设置为父对象的指针,来建立父子关系。
  • 父对象可以有多个子对象,但每个子对象只有一个父对象。
  • 通常,对象树的根节点是顶级窗口对象或应用程序对象,其他对象则是其子节点。

4.QLabel类:

  • QLabel类,使用包含QLable头文件,使用后会在界面左上角显示QLabel对象包含的字符串。
  • 创建在堆上:QLabel l1=new QLabel(this);
  • 创建在栈上:QLabel l2;
  • 创建好QLabel对象后,设置文本:l1->setText();括号中可以传递一个string的匿名对象;也可以直接传递双引号包括的字符串,原因是有一个重载函数来完成隐式类型的转换。

5.乱码问题:

  • 乱码原因:有且只有一个,编码方式不匹配。
  • 在计算机中,一个汉字占几个字节?这和具体的编码方式有关。目前,表示汉字的字符集主要有两种。
  • 其一是GBK,使用两个字节表示一个汉字。一般windows简体中文版就使用GBK为默认字符集。
  • 其二是UTF-8/utf8,变长编码,根据类型一般2~4个字节不等,但是在utf8中一个汉字一般是3个字节.Linux默认的编码格式就是utf8。
  • 如何查看当前源文件是什么编码格式?将源文件使用记事本打开,打开后另存为,在另存为界面就能够看到当前源文件的编码格式。
  • 解决乱码问题:如果要在Qt Creater中解决日志打印乱码问题,就需要统一编码格式,要么改终端打印日志的编码格式,要么改文件的编码格式。但是终端不好改,源文件主流的中文编码方式是utf8,改掉也不太合适。
  • 想要解决Qt中,终端和文件编码不统一导致的乱码问题,有两种方法:
  • 其一是使用QString对象存储字符串后再使用cout打印,QString对象可以自动处理编码格式;
  • 第二种是使用专门的日志打印工具打印日志—qDebug()对象,QDebug相当于一个Qt中的类,使用要包含头文件<QDebug>,可以将它看作是cout来使用,具体使用格式为:qDebug()<<“字符串”;
  • 后续如果要使用打印日志的方式输出一些调试信息,优先使用qDebug() ,它提供了一个开关,可以一次直接关闭所有调试信息的显示。

6.Qt命名规则:

  • Qt命名规则:驼峰命名,使用单词首字母大写来分割多个单词。
  • 小驼峰:首单词首字母小写,主要给变量/函数来命名。
  • 大驼峰:首单词首字母大写,主要给类命名。
  • 总而言之,代码风格具体怎么定,要入乡随俗,需要确保自己写的代码风格和已有代码的代码风格保持一致。

相关文章:

Qt:3.项目创建、对象树、乱码问题、Qt命名规则

目录 1.创建项目&#xff1a; 2.Qt可以支持两套基础类&#xff1a; 3.节点的父子关系和对象树&#xff1a; 4.QLabel类&#xff1a; 5.乱码问题&#xff1a; 6.Qt命名规则&#xff1a; 1.创建项目&#xff1a; qt的项目中有一个以.ui为后缀的文件&#xff0c;他本质是一个…...

C# 入门—实现 Hello, World!

目录 一、.net 平台 二、.net 都能干什么&#xff1f; 三、.net 两种交互模式 四、使用 VS Code 开发 C# 程序 五、实现 Hello, World! 一、.net 平台 下载 .NET(Linux、macOS 和 Windows) (microsoft.com) .NET 简介 - .NET | Microsoft Learn C# :一种编程语言,可以开…...

【项目实训】前端页面初探索(前期探索)

前期&#xff0c;由于没有确定页面展示形式&#xff0c;于是进行了很多探索 首先安装element-ui 导入elemnt-plus 添加use: 设置一个全局样式 编写导航栏 <el-menu:default-active"activeIndex"class"el-menu-demo"background-color"#95d475&quo…...

机器人控制系列教程之动力学建模(2)

接昨天的推文&#xff1a;https://editor.csdn.net/md/?articleId139991958 &#xff0c;动力学的求解通常是个相对比较复杂的过程&#xff0c;但现在基本上不用人工来推算求解各种公式和求解过程了&#xff0c;大家只需要知道其中的步骤即可&#xff0c;现代对于动力学问题的…...

Golang | Leetcode Golang题解之第200题岛屿数量

题目&#xff1a; 题解&#xff1a; func numIslands(grid [][]byte) int {res : 0for i : 0; i < len(grid); i {for j : 0; j < len(grid[i]); j {if grid[i][j] 1 {resdfs(grid, i, j)}}}return res }func dfs(grid [][]byte, r, c int) {h, w : len(grid), len(gri…...

Linux系统启动流程

init程序类型&#xff1a; ①、SysV&#xff1a;init&#xff0c;centos 5之前&#xff0c;配置文件/etc/init.d/ ②、Upstart: init&#xff0c;centos 6&#xff0c;配置文件/etc/init.d/ /etc/init/ ③、Systemd:Systemd&#xff0c;centos 7&#xff0c;配置文件/usr/li…...

Vue 学习之 axios

目录 执行安装命令&#xff1a;npm install axios 使用的时候导入 axios以data&#xff0c;params&#xff0c;headers传参方式的区别 axios封装 是一个基于 promise 的 网络请求库&#xff0c;作用于浏览器和 node.js 中。使用Axios可以在前端项目中发送各种方式的HTTP请求…...

Python学习笔记17 -- 猜数字小游戏2

目录 一、功能函数 1、说明函数 -- 对游戏玩法及设置进行说明 2、答案函数 -- 生成答案 3、猜测函数 -- 让玩家进行猜测 4、对照函数 -- 将答案和猜测进行对照 4.1 A函数 4.2 B函数 5、结果函数 -- 判断得到结果或继续猜测 6、时间函数 -- 判断一局游戏所用时间 7、打…...

【系统架构设计师】七、信息安全技术基础知识(信息安全的概念|信息安全系统的组成框架|信息加解密技术)

目录 一、信息安全的概念 1.1 信息安全的基本要素和范围 1.2 信息存储安全 1.3 网络安全 二、信息安全系统的组成框架 2.1 技术体系 2.2 组织机构体系 2.3 管理体系 三、 信息加解密技术 3.1 数据加密 3.2 对称加密技术 3.3 非对称加密算法 3.4 数字信封 3.5 信…...

CMMM Plus+ Calculus Update 超级游戏大作 游戏说明

资源链接 Scratch超级生命模拟游戏&#xff1a;CMMMPlusCalculusUpdate.sb3资源-CSDN文库 关卡编辑器 ◽️使用 WASD 移动视图。 ◽️LMB 放置单元格。 ◽️Space LMB 删除单元格。Ctrl Space LMB 删除所有相同类型的单元格。 ◽️Q / E 旋转单元格。 ◽️Z / X 在单元格类…...

Java OA系统任务协作模块

以下是一篇关于构建高效且功能丰富的OA系统任务协作模块的博客文章&#xff0c;采用了Spring Boot、Spring Data JPA和React等主流技术。文章不仅展示了项目的基本实现&#xff0c;还介绍了如何优化代码和增加新的功能&#xff0c;以提升系统的性能和用户体验。 --- ## 构建高…...

深入解析Maven常用命令

目录 什么是 MavenMaven 的安装与配置Maven 项目结构Maven 常用命令 mvn cleanmvn compilemvn testmvn packagemvn installmvn deploymvn sitemvn dependencymvn help 总结 什么是 Maven Maven 是由 Apache 软件基金会开发的一个项目管理和构建工具。它基于项目对象模型&…...

【Docker】镜像

目录 1. 镜像拉取 2. 镜像查询 3. 镜像导出 4. 镜像上传 5. 镜像打标签 6. 镜像上推 7. 镜像删除 8. 镜像运行及修改 8.1 在registry 节点运行 mariadb 镜像&#xff0c;将宿主机 13306 端口作为容器3306 端口映射 8.2 查看容器ID 8.3 进入容器 8.4 创建数据库xd_d…...

力扣最新详解5道题:两数之和三数之和四数之和

目录 一、查找总价格为目标值的两个商品 题目 题解 方法一&#xff1a;暴力枚举 方法二&#xff1a;对撞指针 二、两数之和 题目 题解 方法一&#xff1a;暴力枚举 方法二&#xff1a;哈希表法 三、三数之和 题目 题解 方法一&#xff1a;排序暴力枚举set去重 …...

通讯:单片机串口和电脑通讯

目录 1.串口输出数据到电脑 硬件部分 串口输出数据到电脑的软件软件部分&#xff1a; 相关问题&#xff1a; 2.单片机串口--485--485转USB--电脑 串口&#xff0c;芯片&#xff0c;转换器&#xff0c;设备之间的通讯的接线&#xff0c;都是要TX--RX, RX--TX 交叉连接。 单…...

ubuntu22.04 设置双屏

一 概述 最近把ubuntu18.04 升级到 22.04 双屏显示出来问题&#xff0c;在此记录下解决问题方案。二 解决方案 1 使用命令查看能检测到显示器 xrandr根据输出的信息&#xff0c;我们可以知道 HDMI-0 与 DP-0 是connected 。检测到两个显示器 2 设置输出显示器分辨率 由于我…...

【FPGA-常见问题及解决方案】

1、VIVADO的License无法加载&#xff1a;license文件必须在英文路径&#xff1b; 2、例程代码路径不能过长&#xff0c;也不允许有中文路径&#xff01;&#xff01;&#xff01; 3、明明加载了license&#xff0c;license也正确&#xff0c;例程无法完成综合&#xff1a;这种情…...

【第3章】MyBatis-Plus持久层接口之Service Interface(上)

文章目录 前言一、save1. 示例&#xff08;save&#xff09;2. 示例&#xff08;saveBatch&#xff09;3. 示例&#xff08;saveBatch 指定批次大小&#xff09; 二、saveOrUpdate1.示例&#xff08;saveOrUpdate&#xff09;2.示例&#xff08;saveOrUpdateBatch&#xff09;3…...

Nodemon的入门及使用

nodemon 是一个工具&#xff0c;通过在检测到目录中的文件更改时自动重新启动 Node.js 应用程序来帮助开发基于 Node.js 的应用程序。它非常适合在开发环境中使用。以前&#xff0c;我们开发一个 Node 后端服务时&#xff0c;每次更改文件&#xff0c;都需要手动重启服务才能生…...

cesium 实现三维无人机航拍过程实景效果

需求背景 需要实现一个动态的三维无人机航拍过程实景效果 代码开发中&#xff0c;迭代功能待续... 解决效果 cesium 实现三维无人机航拍过程实景效果 index.vue <template><div><el-button class"btn" click"start">开始</el-butt…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...