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

http://www.lryc.cn/news/384490.html

相关文章:

  • C# 入门—实现 Hello, World!
  • 【项目实训】前端页面初探索(前期探索)
  • 机器人控制系列教程之动力学建模(2)
  • Golang | Leetcode Golang题解之第200题岛屿数量
  • Linux系统启动流程
  • Vue 学习之 axios
  • Python学习笔记17 -- 猜数字小游戏2
  • 【系统架构设计师】七、信息安全技术基础知识(信息安全的概念|信息安全系统的组成框架|信息加解密技术)
  • CMMM Plus+ Calculus Update 超级游戏大作 游戏说明
  • Java OA系统任务协作模块
  • 深入解析Maven常用命令
  • 【Docker】镜像
  • 力扣最新详解5道题:两数之和三数之和四数之和
  • 通讯:单片机串口和电脑通讯
  • ubuntu22.04 设置双屏
  • 【FPGA-常见问题及解决方案】
  • 【第3章】MyBatis-Plus持久层接口之Service Interface(上)
  • Nodemon的入门及使用
  • cesium 实现三维无人机航拍过程实景效果
  • Rust:使用 Warp 框架编写基于 HTTPS 的 RESTful API
  • 测试开发工程师需要掌握什么技能?
  • SpelExpressionParser评估SpEL(Spring Expression Language)表达式的解析器
  • C#学习系列之DataGrid无故添加空行
  • 详解Alibaba Cloud Linux 3.2104 LTS 64位镜像操作系统
  • springboot异常产生原因
  • Redis 7.x 系列【8】数据类型之哈希(Hash)
  • jetson 安装 Rustdesk失败
  • Vue原生写全选反选框
  • typescript学习回顾(三)
  • 算尽天下财,铸就大明梦 —— 大明钱算子夏元吉的传奇一生