代码的命名规则有驼峰命名法和蛇形命名法,qt偏好驼峰命名法
//蛇形命名法(c++/python偏好)
student_count
unordered_map
priority_queue
//驼峰名法(用大写字母进行单词分割)
//大驼峰(,首字母大写,给Qt中内置的类和头文件命名,自定义类型也可以)
#include
#include
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;
运行 ctrl +R
编译 ctrl +B
帮助文档 F1 ,点击F1两次跳到帮助界面
跳到符号定义 F2 或者ctrl + 鼠标点击
注释 ctrl+/
字体缩放 ctrl + 鼠标滚轮
整行移动代码 ctrl + shift + ↑或↓
自动对齐 ctrl + i
同名之间的.h和.cpp文件跳转 F4
查找 ctrl+F
生成函数声明的对应定义 alt+enter
Qt不需要单独下载帮助文档,在安装的时候,就已经帮你下载好了。
打开帮助文档有三种方法,实际编程的时候使用那种都可以。



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








还是以 QPushButton 为例:






在qt中创建对象的时候会提供一个Parent对象指针,下面来解释这个Parent指针是干什么的:
对象树是qt中非常重要的内容,主要用于自动析构对象。
在qt中QObject是所有类的祖先,向下生成了许多子类,这样一个关系就叫做对象树。

使用时,需要通过setParent函数与对象间确定父子关系,之后子对象会进入父对象的children列表。
当析构时,会先从父对象开始,先走父对象析构函数(注意,只是析构没有真正释放),然后依旧children列表析构子对象,直到走到叶子对象后,释放叶子对象,再返回父对象释放,直到回到一开始的父对象。
当释放一个对象时,会把它所有的子对象都释放掉,因此,之后不能再去释放子对象,否则会发生二次释放的错误。
学习:创建一个自定义的类,主要目的是,为了创建一个自定义析构函数,在析构函数中完成打印,让我们看到析构的过程
使用自己定义的MyLabel代替原来的QLabel,所谓的“继承”就是扩展,保持原有的功能不变,在给对象扩展出一个新的析构函数,

通过自定义析构函数,打印一个自定义的日志,方便观察程序运行效果。

说明: 有日志,说明自定义析构函数被执行了,虽然没有手动delete,但是由于吧MyLabel挂在了对象树上,窗口被销毁时,会自动销毁对象树中所有的对象,MyLabel的析构就执行到了。
我们发现“对象被销毁”这几个中文变成了莫名其妙的文字,也就是出现了乱码问题。
汉字有6万左右,常用的就4k个左右。
使用一个大表格,具体每个汉字,都使用数字表示,这就是字符集。
表示汉字的字符集有很多种,不同的字符集,表示同一个汉字,使用的数字不一样。
目前,表示汉字字符集,主要有两种方式:
1.GBK。(中国大陆)使用两个字节表示一个汉字。windows简体中文版,默认的字符集就是GDK。
2.UTF-8/utf8。变长编码,表示一个符号,使用的字节数可以有变化,utf8中,一个汉字,一般是3个字节。
Linux字符集默认utf8。
当前字符串是那种编码方式,和字符串所在文件的编码方式是一致的。
如何查看文件编码方式?
以记事本的方式打开所要查看的文件,然后另存为文件,就可以看到该文件的编码方式。

如果显示UTF—8,说明文件就是UTF—8编码。
如果显示的是ANSI,说明这个文件就是GBK编码。
解决方法:
- Qt中提供了一个qDebug工具,借助这个,就可以完成打印日志的过程。(Qt中专门用来打印日志的工具,能自动处理编码方式)
- Qt中,有一个东西,QString,可以帮助我们自动的处理编码方式。
结果如下:

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

注意:关注内存泄漏问题,是融入我们DNA的事。




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