5[toc]
QT(跨平台的C++ GUI应用程序开发框架)
一、QT概述
1、QT历史发展
1)1991年诞生( Haavard Nord 和 Eirk Chambe-Eng )
2)1994年 Haavard Nord 和 Eirk Chambe-Eng 创立了奇趣科技公司( Trolltech );
3)2005年发布 Qt 4.0
4)2008年奇趣科技被诺基亚收购;
5)2009年qt源代码开放;
6)2012年诺基亚将qt全部知识产权出售给(芬兰)Digia公司;
7)2013年发布 Qt 5.0
8)2014年Digia成立了子公司The Qt Company
2、QT 5.4.1安装
1)下载qt安装包
qt-opensource-linux-x64-android-5.4.1.run // 64位
qt-opensource-linux-x86-android-5.4.1.run // 32位
2)运行安装包,根据提示安装到主目录下
“/home/tarena/Qt5.4.1”
3)配置环境变量PATH
sudo vi /etc/environment
PATH="/home/tarena/Qt5.4.1/Tools/QtCreator/bin:/home/tarena/Qt5.4.1/5.4/gcc_64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/..."
4)测试
$ qmake -v
- - - - - - - - 可以看到相应qt版本
$ qtcreator
- - - - - - – 可以进入qt的IDE界面
$ which qmake
- - - - - -可以查看qt安装路径
扩展安装方法:
sudo apt install cmake qt5-default qtcreator
3、Qt相关工具介绍
1)assistant(Qt助手)
$ assistant
- - - - - - - - -查看帮助手册
2)qmake(Qt构建器)
$ qmake -project
- - - - 生成工程文件xx.pro
$ qmake
根据工程文件生成Makefile
执行make:根据Makefile完成工程编译和连接;
3)designer(Qt设计师)
$ designer
—- 打开Qt设计师,用于设计图形界面,以"xx.ui"
文件形式保存;
4)uic(转换器)
将xx.ui文件转换为xx.h头文件
5)rcc(资源管理器)
6)moc(元对象编译器)
将Qt中扩展的语法还原成标准C++的代码;
7)qtcreator(Qt创造器)
Qt的集成开发环境,包含上面所有工具;
4、Qt帮助手册的使用
eg: QApplication
1)关注开始部分内容,了解头文件,主要功能、构建选项,继承关系等…
2)Properties(成员变量)
3)Public Functions(公有的成员函数)
4)Reimplemented Public Functions(公有的虚函数)
5)Public Slots(公有的槽函数)
/* 类中用slots声明的函数 */
class XX{
public slots:
void slot_func(){} // 槽函数
};
6)Signals(信号函数)
/* 类中使用signals声明的函数 */
class XX{
signals:
void signal_func(); // 信号函数
};
7)Static Public Members(静态成员)
8)Reimplemented Protected Functions(保护虚函数)
9)Macros(元对象/宏)
10)Detailed Description(详细说明)
二、第一个Qt程序
1)创建工程目录Hello
注意:每个qt程序,无论多么简单,必须要放在一个独立的工程目录中。
2)进入工程目录,编写源代码:
$ cd Hello
$ vi hello.cpp
3)执行$ qmake -project
生成hello.pro
的工程文件
$ vi Hello.pro // 添加构建选项
QT += widgets
4)执行qmake
根据工程文件,生成编译链接脚本 Makefile。
5)执行make
,根据 Makefile 完成工程的编译和链接,如果代码中有语法错误会有提示,修改之后再次执行make
6)运行测试
./hello
正常可以在屏幕左上角看到一个标签窗口显示Hello World!
错误提示1:QApplication找不到,检查构建选项
QT += widgets
错误提示2:在make时提示时间相关错误,修改系统时间即可;
三、Qt字符串和字符编码
1、常见的编码
1)linux中默认使用 utf-8
2)windows中默认使用 ANSI
(中文GBK
,英文ASCII
)
Vim更改编码方式:set fileencoding=gbk
2、QString 类表示字符串
1)Qt内部使用 QString 类型表示字符串,默认使用 unicode 编码方式,每个字符占用两个字节;
2)而实际编程中常用"const char*"
表示的字符串,其编码不可能是unicode,所以需要将其转换为unicode再显示,否则可能出现中文乱码;
3、编码转换(QTextCodec)
0)包含头文件
#include <QTextCodec>
1)创建编码对象
QTextCodec *codec = QTextCodec::codecForName("编码方式");
2)使用toUnicode将要显示中文字符串转换为unicode
QString string = codec->toUnicode("含有中文的字符串");
注意:
在Qt5中使用"const char*"
构造QString字符串时,默认使用fromUtf8()自动将其转换为unicode的编码;
设置vi编辑器的编码方式
底行命令:
:set fileencoding=utf-8
:set fileencoding=gbk
:set fileencoding//查看当前的编码方式
练习:
构建一个按钮对象(QPushButton),显示中文内容"我是一个按钮"
。
1)使用vi编写程序,构建(6步),直接运行可以正常显示中文。
2)使用底行命令将编码转换为gbk
:set fileencoding=gbk
再重新make,再显示则乱码
3)设置编码对象,将中文字符串转换为unicode再显示,又可以正常显示中文内容。