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.创建项目: 2.Qt可以支持两套基础类: 3.节点的父子关系和对象树: 4.QLabel类: 5.乱码问题: 6.Qt命名规则: 1.创建项目: qt的项目中有一个以.ui为后缀的文件,他本质是一个…...
C# 入门—实现 Hello, World!
目录 一、.net 平台 二、.net 都能干什么? 三、.net 两种交互模式 四、使用 VS Code 开发 C# 程序 五、实现 Hello, World! 一、.net 平台 下载 .NET(Linux、macOS 和 Windows) (microsoft.com) .NET 简介 - .NET | Microsoft Learn C# :一种编程语言,可以开…...
【项目实训】前端页面初探索(前期探索)
前期,由于没有确定页面展示形式,于是进行了很多探索 首先安装element-ui 导入elemnt-plus 添加use: 设置一个全局样式 编写导航栏 <el-menu:default-active"activeIndex"class"el-menu-demo"background-color"#95d475&quo…...
机器人控制系列教程之动力学建模(2)
接昨天的推文:https://editor.csdn.net/md/?articleId139991958 ,动力学的求解通常是个相对比较复杂的过程,但现在基本上不用人工来推算求解各种公式和求解过程了,大家只需要知道其中的步骤即可,现代对于动力学问题的…...
Golang | Leetcode Golang题解之第200题岛屿数量
题目: 题解: 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程序类型: ①、SysV:init,centos 5之前,配置文件/etc/init.d/ ②、Upstart: init,centos 6,配置文件/etc/init.d/ /etc/init/ ③、Systemd:Systemd,centos 7,配置文件/usr/li…...
Vue 学习之 axios
目录 执行安装命令:npm install axios 使用的时候导入 axios以data,params,headers传参方式的区别 axios封装 是一个基于 promise 的 网络请求库,作用于浏览器和 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超级生命模拟游戏:CMMMPlusCalculusUpdate.sb3资源-CSDN文库 关卡编辑器 ◽️使用 WASD 移动视图。 ◽️LMB 放置单元格。 ◽️Space LMB 删除单元格。Ctrl Space LMB 删除所有相同类型的单元格。 ◽️Q / E 旋转单元格。 ◽️Z / X 在单元格类…...
Java OA系统任务协作模块
以下是一篇关于构建高效且功能丰富的OA系统任务协作模块的博客文章,采用了Spring Boot、Spring Data JPA和React等主流技术。文章不仅展示了项目的基本实现,还介绍了如何优化代码和增加新的功能,以提升系统的性能和用户体验。 --- ## 构建高…...
深入解析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 镜像,将宿主机 13306 端口作为容器3306 端口映射 8.2 查看容器ID 8.3 进入容器 8.4 创建数据库xd_d…...
力扣最新详解5道题:两数之和三数之和四数之和
目录 一、查找总价格为目标值的两个商品 题目 题解 方法一:暴力枚举 方法二:对撞指针 二、两数之和 题目 题解 方法一:暴力枚举 方法二:哈希表法 三、三数之和 题目 题解 方法一:排序暴力枚举set去重 …...
通讯:单片机串口和电脑通讯
目录 1.串口输出数据到电脑 硬件部分 串口输出数据到电脑的软件软件部分: 相关问题: 2.单片机串口--485--485转USB--电脑 串口,芯片,转换器,设备之间的通讯的接线,都是要TX--RX, RX--TX 交叉连接。 单…...
ubuntu22.04 设置双屏
一 概述 最近把ubuntu18.04 升级到 22.04 双屏显示出来问题,在此记录下解决问题方案。二 解决方案 1 使用命令查看能检测到显示器 xrandr根据输出的信息,我们可以知道 HDMI-0 与 DP-0 是connected 。检测到两个显示器 2 设置输出显示器分辨率 由于我…...
【FPGA-常见问题及解决方案】
1、VIVADO的License无法加载:license文件必须在英文路径; 2、例程代码路径不能过长,也不允许有中文路径!!! 3、明明加载了license,license也正确,例程无法完成综合:这种情…...
【第3章】MyBatis-Plus持久层接口之Service Interface(上)
文章目录 前言一、save1. 示例(save)2. 示例(saveBatch)3. 示例(saveBatch 指定批次大小) 二、saveOrUpdate1.示例(saveOrUpdate)2.示例(saveOrUpdateBatch)3…...
Nodemon的入门及使用
nodemon 是一个工具,通过在检测到目录中的文件更改时自动重新启动 Node.js 应用程序来帮助开发基于 Node.js 的应用程序。它非常适合在开发环境中使用。以前,我们开发一个 Node 后端服务时,每次更改文件,都需要手动重启服务才能生…...
cesium 实现三维无人机航拍过程实景效果
需求背景 需要实现一个动态的三维无人机航拍过程实景效果 代码开发中,迭代功能待续... 解决效果 cesium 实现三维无人机航拍过程实景效果 index.vue <template><div><el-button class"btn" click"start">开始</el-butt…...
收藏!AI时代程序员薪资分化严重?3个月转型AI工程,求职成功率提升60%!
文章指出AI时代程序员薪资两极分化,顶级AI人才年薪破亿,而普通开发者求职困难。文章强调这不是行业寒冬,而是结构性变革。建议程序员提升AI工程能力,转型AI工程师,成功案例显示求职成功率提升60%,薪资涨幅3…...
JD-GUI深度解析:Java字节码逆向工程的瑞士军刀
JD-GUI深度解析:Java字节码逆向工程的瑞士军刀 【免费下载链接】jd-gui A standalone Java Decompiler GUI 项目地址: https://gitcode.com/gh_mirrors/jd/jd-gui 在Java开发的世界里,我们常常需要面对只有字节码没有源码的困境——第三方库的调试…...
企业级应用awesome-stock-resources:商业项目合规使用终极指南
企业级应用awesome-stock-resources:商业项目合规使用终极指南 【免费下载链接】awesome-stock-resources :city_sunrise: A collection of links for free stock photography, video and Illustration websites 项目地址: https://gitcode.com/gh_mirrors/aw/awe…...
如何使用Android Sunflower构建可预测UI:掌握单向数据流的终极指南
如何使用Android Sunflower构建可预测UI:掌握单向数据流的终极指南 【免费下载链接】sunflower A gardening app illustrating Android development best practices with migrating a View-based app to Jetpack Compose. 项目地址: https://gitcode.com/gh_mirro…...
【限时解密】Google内部测试版Gemini插件Beta通道开放倒计时——附3个已验证的早期功能入口及Token获取密钥
更多请点击: https://intelliparadigm.com 第一章:Gemini Chrome浏览器插件的演进脉络与Beta通道战略意义 Gemini Chrome 插件自 2023 年底首次公开测试以来,已历经三次重大架构重构:从初始的轻量级内容注入脚本,演进…...
ESP8266+STM32远程控制实战:如何通过华为云中转指令与数据
ESP8266STM32远程控制实战:华为云物联网全链路开发指南 在智能家居和工业监控领域,远程设备控制一直是核心技术痛点。当ESP8266遇上STM32,再通过华为云物联网平台搭建通信桥梁,这个组合能爆发出怎样的生产力?本文将带您…...
用emWin定时器在STM32上做个简易秒表:从对话框UI到后台逻辑的完整实现
用emWin定时器在STM32上实现高精度秒表:从UI设计到多任务协同的工程实践 在嵌入式GUI开发中,精确的时间控制往往决定着用户体验的成败。当我们需要在STM32平台上实现一个毫秒级响应的秒表应用时,emWin的窗口管理器定时器(WM_TIMER)便成为连接…...
如何用wxlivespy实现微信视频号直播数据实时抓取与分析
如何用wxlivespy实现微信视频号直播数据实时抓取与分析 【免费下载链接】wxlivespy 微信视频号直播间弹幕信息抓取工具 项目地址: https://gitcode.com/gh_mirrors/wx/wxlivespy wxlivespy是一款专业级的微信视频号直播间弹幕信息抓取工具,能够实时捕获弹幕、…...
【必收藏】2026年大模型学习全指南|小白程序员入门捷径,抓住百万年薪红利
2026年的AI行业,机遇早已从风口走向实锤——应用层依旧是那片肉眼可见的黄金赛道!从大厂技术布局到招聘市场风向标,所有信号都在一致指向:大模型应用开发,已然成为程序员突破职业瓶颈、实现薪资跃升的核心赛道。 字节跳…...
实战 | 性能瓶颈无处遁形,揭秘 mPaaS 全链路压测的落地策略与调优秘籍
1. 从性能焦虑到精准定位:为什么需要全链路压测? 第一次接手移动应用性能优化项目时,我盯着监控大屏上跳动的红色警报线手足无措。用户投诉像雪片般飞来:"支付页面卡死"、"图片加载转圈半分钟"、"活动页…...
