Qt的认识与相关问题的解决
Posted gumpzlc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt的认识与相关问题的解决相关的知识,希望对你有一定的参考价值。
一.Qt程序的步骤
1. 编写源码
a.创建目录,每一个Qt工程都要有一个单独的目录
b.编写入口
QApplication app(argc,argv);//创建应用程序对象
QLabel lab("你要写的内容");//创建标签对象,此控件专门用来实现文字
lab.show();//显示标签,几乎所有的控件默认都是隐藏的
return app.exec();//把程序的运算交给Qt(监控事件,等待用户操作)
第一句和第四局的格式都是不变的;
2. 生成工程文件:qmake -project 生成目录名.pro(此文件可以被Qt创造器打开)
3. 生成Makefile文件 qmake
4. 编译的时候语法非常严格,错误信息也很多
二.查阅帮助文档
1. 打开Qt帮助文档(assistant命令),使用索引,搜索找到对应的控件类或函数,宏,inherits:它的父类有哪些
2. 头文件,要注意使用此控件时要包含什么头文件,一般情况下是类名
3. Properties:具有保护属性的成员变量。
4. Public Functions: 具有公开属性的成员函数,部分功能函数可能在父类中,当需要的成员函数找不到时可以去父类中找
5. Reimplemented Public Functions:可以重写的成员函数
6. Public Slots:具有公开属性的槽函数,首先它具有某些功能的成员函数,但他可以与信号绑定,不光可以被信号调用,也可以被直接调用
7. Signals:他们是以函数形式存在的,但他们并不实现出来,可以用emit显示的触发
8. Reimplemented Protected Functions:可以重写的具有保护属性的成员函数
9. Detailed Description:类的使用注意事项
10. 其他:静态成员,静态成员函数,相关的宏
三.中文的处理
1. 由于历史原因,地区,国家,文化的不同,所使用的文字编码是不同的。
英语国家: ASCII,128个字符
中国大陆:GBK2312(windows下常用的字符编码,每个汉字2字节)
港台地区:BIG5
2. 统一字符编码
国际标准化组织设计出一套全世界通用的字符编码(Unicode):
UTF-2:双字节统一字节集
UTF-4:四字节统一字符集
UTF-8:用1~4字节表示一个Unicode字符
UTF-16:用2~4字节表示一个Unicode字符
UTF-32:用4字节表示一个Unicode字符
3. 内外有别:
内部编码:在Qt程序中所有的控件默认使用的是UTF-16编码
外部编码:操作系统所使用的编码(ubntu默认使用的是UTF-8编码)
4. 解决Qt乱码问题
Qt4.8默认的是UTF-16编码,因此必须手动设置后才能正确显示中文
Qt5.0之后的默认的是UTF-8编码
5. 在程序最开始时设计内部编码
QTextCodec* code = QTextCodec::codecForName("utf-8");
QTextCodec::setCodecForTr(code);
QTextCodec::setCodecForLocale(code);
QTextCodec::setCodecForCStrings(code);
四.信号与槽
信号:就是以函数形式存在的一种信号
槽:是一种特殊函数,如果不配合信号,可以当作普通函数使用
信号和槽函数必须经常连接才能协调工作
connect(负责发送信号的对象指针,信号函数签名:SIGNAL(函数名及参数),接受信号的对象指针,槽函数的函数签名: SLOT(函数名及参数))
五.自定义信号和槽
1. 在自定义的类中定义信号和槽函数一定要单独写一个头文件
2. 自定义的类必须要继承QObject类
3. 在类的开头必须要有宏:Q_OBJECT
4. 定义信号时前面要加关键字,信号以函数形式存在,但不需要实现
signals:
5. 定义槽函数时要加public slots:关键字,可以显示调用,也可以与信号连接,由信号触发调用
6. 信号由关键字emit触发, 可以带参数也可以不带 ,如果想让信号给槽函数发送数据,他们的参数格式必须一样
六.控件与容器
组成窗口界面的小工具叫控件,叫QLabel,QTextEdit,QPushButton
容器用来存放控件的类,
QMainwindow:主窗口容器,由标题栏,菜单栏,工具栏,状态栏组成
以上是关于Qt的认识与相关问题的解决的主要内容,如果未能解决你的问题,请参考以下文章