Qt初识(对象树,乱码问题,小结)
1.作用
类似于前端开发(网页开发),对象树(DOM),是一个树形结构(N叉树),通过树形结构把界面上的各种控件连接起来。故Qt中的对象树也是将界面中的各种控件连接起来。
主要目的:为了能够在窗口关闭或者销毁的时候,把这些对象同一释放。
2.乱码问题
出现原因:(有且只有一个:编码方式不匹配)
在计算机中,英文字符用ASCII,只表示英文,一个字符足够了,因为英文字母数目有限,但是当前中文字大约有6w个,表示汉字的字符集有很多种,不同的字符集,表示同一个汉字,使用的数字不同!
目前,表示汉字的字符集,主要是两种方式
- GBK(中国大陆)使用两个字节表示一个汉字,(eg:Windows简体中文版,默认的字符集就是GBK)
- UTF-8/utf8 变长编码,表示一个符号,使用的字节数是变化的,2~4之间,但在utf8中,表示一个汉字,大多是3个字节(eg:Linux)(当前主流)
查看utf8的一个网站:http://www.mytju.com/classCode/tools/encode_utf8.asp
(如果你字符串本身是utf8编码,但是终端控制台是按照gbk的方式来解析的,此时就会出现乱码,即拿着utf8的数值,去查询gbk的码表)
文件是那种编码方式,那么文件中的内容就也是哪种编码方式==》如何去看文件的编码方式呢
使用记事本打开=》文件=》另存为=》下面会有该文件的编码方式(如果显示ANSI那么就是gbk编码;)
3.Qt中的乱码解决方式
Qt中QString是可以帮助我们自动的处理编码方式的
Qt中提供了一个qDebug()的工具,可以完成打印日志(不用cout)的过程,很好的处理编码问题
qDebug()<<"MyLabel 被销毁";
#include <QDebug>//QDebug是Qt中的类,又不会直接使用这个类
qDebug()这个宏封装了QDebug对象,可以直接当做cout来用
//而且用qDebug打印的调试日志,是可以进行统一关闭的