Qt编程注意事项

发布于:2024-05-19 ⋅ 阅读:(179) ⋅ 点赞:(0)


前言:
要想学好QT,首先把本文章的学QT注意事项,牢记于心。

一、Qt命名规则

代码的命名规则有驼峰命名法和蛇形命名法,qt偏好驼峰命名法

//蛇形命名法(c++/python偏好)
student_count
unordered_map
priority_queue
//驼峰名法(用大写字母进行单词分割)
//大驼峰(,首字母大写,给Qt中内置的类和头文件命名,自定义类型也可以)
#include <QString>
#include <QWidget>
		QSring str;
		QWidget w;
//小驼峰(首字母小写,给变量和函数命名)
void connectTheSignal();
setText("hello world");

类的成员变量设置函数使用 set+成员变量名,获取成员变量的函数直接用成员变量名(如果是bool类型,有可能会用一些表示状态的术语,如isVisilble,hasFocus):

//普通成员变量设置和获取
void setText(QString text);
QString text()const;
//bool的成员变量设置和获取
void setEnabled(bool enabled);
bool isEnabled()const;

二、Qt Creator 中的快捷键

	运行  								ctrl +R
    编译  								ctrl +B
    帮助文档  							F1 ,点击F1两次跳到帮助界面
    跳到符号定义 							F2 或者ctrl + 鼠标点击
    注释 								ctrl+/
    字体缩放  							ctrl + 鼠标滚轮
    整行移动代码							ctrl + shift + ↑或↓
    自动对齐   							ctrl + i
    同名之间的.h和.cpp文件跳转				F4
    查找						    		ctrl+F
    生成函数声明的对应定义					alt+enter

三、如何使用帮助文档

3.1 打开文档方法

Qt不需要单独下载帮助文档,在安装的时候,就已经帮你下载好了。
打开帮助文档有三种方法,实际编程的时候使用那种都可以。

  1. 光标放在要查找的类名/方法名上,直接按F1
    在这里插入图片描述
  2. Qt creator左侧边栏中直接用鼠标单击“帮助”’按钮。
    在这里插入图片描述
  3. 找到Qt的安装路径,在“bin”文件夹下找到assistant.exe,双击打开。
    在这里插入图片描述

3.2 如何查看文档

查看所用部件的相应成员函数( 本身的成员函数,继承过来的成员函数 ),主要是为了查看这个成员函数如何使用,包括函数的功能,参数,返回值。

3.2.1 查看所用部件(类)的相应成员函数(功能,参数,返回值)

下面以 QPushButton (普通按钮)为例:
在这里插入图片描述

  1. 公有函数
    在这里插入图片描述
  2. 点击函数名字即可查看其相应用法:
    在这里插入图片描述
    在这里插入图片描述
  3. 很多时候,我们需要使用到继承过来的函数,如给按钮设置内容( setText() )即是从 QAbstractButton 继承过来:
    在这里插入图片描述
    点击“QAbstractButton”即可跳转到 QAbstractButton 公有函数的地方:
    在这里插入图片描述
    点击函数名字即可查看其用法:
    在这里插入图片描述
  4. 很多事情,我们可能需要在使用到某个函数时,再查看其用法。
    首先,需要先把函数的参数随便拿个数填好,然后,光标移动到函数名字的地方,再按“F1”即可跳转到此函数的使用说明:
    在这里插入图片描述

3.2.2 查看部件的信号

还是以 QPushButton 为例:

  1. 在 QPushButton 类中不能直接查看 Signals 的信息,需要在其基类“QAbstractButton ”中查找,然后在“QAbstractButton ”页面中找到目录,点击“Signals”:
    在这里插入图片描述
  2. 除了本身信号,还有继承过来的信号:
    在这里插入图片描述
  3. 点击信号名字,就可以查看信号的相关说明:
    在这里插入图片描述
    在这里插入图片描述

3.2.3 查看部件的事件(所对应的虚函数如何编写)

  1. 部件常用事件主要在 QWidget 中声明,选择“Events”即可查看相关说明,且每个事件都对应着事件函数:
    在这里插入图片描述在这里插入图片描述

四、对象模型(对象树DOM)

4.1 对象树概念

在qt中创建对象的时候会提供一个Parent对象指针,下面来解释这个Parent指针是干什么的:

  1. QObject是以对象树的形式组织起来的。
  2. 当创建一个QObject对象时,会看到QObject的构造函数接收一个QObject指针为参数,这个参数就是Parent,也就是父对象指针。这相当于,在创建QObject对象时,可以提供一个其父对象(指定父亲),我们创建的这个QObject对象会自动添加到其父对象的children()列表上。
  3. 当父对象析构的时候,其父对象的children()列表中的所有对象也会被析构(注意这里的父对象并不是继承意义上的父类)。
  4. 因此可以在代码中肆意创建对象,只要指定父对象,父对象包含管理释放(析构),那么子对象在父对象析构的时候会自动析构。
  5. 对象树中,析构的顺序和构造的顺序是相反的
  6. QWidget是能够在屏幕上显示一切组件的父类,QWidget是继承自QObject,因此也继承了这种对象树的关系,一个孩子自动的成为父组件的一个子组件,我们也可以自己删除子对象,它们会自动从其父对象列表中删除

4.2 对象树构造及析构过程(释放对象)

对象树是qt中非常重要的内容,主要用于自动析构对象。
在qt中QObject是所有类的祖先,向下生成了许多子类,这样一个关系就叫做对象树。
在这里插入图片描述
使用时,需要通过setParent函数与对象间确定父子关系,之后子对象会进入父对象的children列表。
当析构时,会先从父对象开始,先走父对象析构函数(注意,只是析构没有真正释放),然后依旧children列表析构子对象,直到走到叶子对象后,释放叶子对象,再返回父对象释放,直到回到一开始的父对象。
当释放一个对象时,会把它所有的子对象都释放掉,因此,之后不能再去释放子对象,否则会发生二次释放的错误。
学习:创建一个自定义的类,主要目的是,为了创建一个自定义析构函数,在析构函数中完成打印,让我们看到析构的过程

  1. 使用自己定义的MyLabel代替原来的QLabel,所谓的“继承”就是扩展,保持原有的功能不变,在给对象扩展出一个新的析构函数,
    在这里插入图片描述

  2. 通过自定义析构函数,打印一个自定义的日志,方便观察程序运行效果。
    在这里插入图片描述
    说明: 有日志,说明自定义析构函数被执行了,虽然没有手动delete,但是由于吧MyLabel挂在了对象树上,窗口被销毁时,会自动销毁对象树中所有的对象,MyLabel的析构就执行到了。

  3. 我们发现“对象被销毁”这几个中文变成了莫名其妙的文字,也就是出现了乱码问题。
    汉字有6万左右,常用的就4k个左右。
    使用一个大表格,具体每个汉字,都使用数字表示,这就是字符集。
    表示汉字的字符集有很多种,不同的字符集,表示同一个汉字,使用的数字不一样。
    目前,表示汉字字符集,主要有两种方式:

1.GBK。(中国大陆)使用两个字节表示一个汉字。windows简体中文版,默认的字符集就是GDK。
2.UTF-8/utf8。变长编码,表示一个符号,使用的字节数可以有变化,utf8中,一个汉字,一般是3个字节。
Linux字符集默认utf8。

当前字符串是那种编码方式,和字符串所在文件的编码方式是一致的。
如何查看文件编码方式?
以记事本的方式打开所要查看的文件,然后另存为文件,就可以看到该文件的编码方式。
在这里插入图片描述

如果显示UTF—8,说明文件就是UTF—8编码。
如果显示的是ANSI,说明这个文件就是GBK编码。

解决方法:

  1. Qt中提供了一个qDebug工具,借助这个,就可以完成打印日志的过程。(Qt中专门用来打印日志的工具,能自动处理编码方式)
  2. Qt中,有一个东西,QString,可以帮助我们自动的处理编码方式。

结果如下:
在这里插入图片描述

使用qDebug,可以打印调试日志,也可以统一进行关闭!
输出的日志是调试阶段给程序员看得,如果程序发布给用户,不需要用户看到这些日志。
qDebug可以通过编译开关,来实现一键式关闭。

在这里插入图片描述
注意:关注内存泄漏问题,是融入我们DNA的事。

五、Qt窗口坐标体系

  1. 认识坐标系:
    在这里插入图片描述
    拇指为x轴,食指为y轴,中指为z轴。
    坐标系的原点(0,0)就是屏幕的左上角/窗口的左上角;给Qt控件设置位置,就需要指定坐标,对于这个控件来说,坐标系原点是相对于父窗口/控件的。
    在这里插入图片描述
  2. 认识像素。
    坐标背后的单位:像素
    显示器本质是由一大堆发光的小灯泡构成的;
    在这里插入图片描述
  3. 实例:使用Qt坐标系设置控件的位置。
    move可以设置按钮坐标位置
    在这里插入图片描述

补充:
总结:

如果当前程序界面比较固定,此时就会以图形化的方式来构造界面。
如果当前程序界面经常要动态变化,此时就会以代码的方式来构造界面。
也可以混合式(图形化和代码的方式都用了)构造界面。


网站公告

今日签到

点亮在社区的每一天
去签到