1,Qt 概述
1.1 什么是 Qt
Qt 是一个跨平台的 C++ 图形用户界面应用程序框架. 它为应用程序开发者提供建立艺术级图形界面所需的所有功能. 它是完全面向对象的, 很容易扩展, 并且允许真正的组件编程.
1.2 Qt 的发展史
1991 年 Qt 最早由奇趣科技开发
1996 年 进入商业领域, 它也是目前流行的 Linux 桌面环境 KDE 的基础
2008 年 奇趣科技被诺基亚公司收购, Qt 称为诺基亚旗下的编程语言
2012 年 Qt 又被 Digia 公司收购
当前 Qt 最新版本为 5.5.0
1.3 支持的平台
Windows - XP,Vista,Win7,Win8,Win2008,Win10
Uinux/X11 - Linux,Sun Solaris,HP-UX,Compaq Tru64 UNIX,IBM AIX,SGI IRIX,FreeBSD,BSD/OS, 和其他很多 X11 平台
Macintosh - Mac OS X
Embedded - 有帧缓冲支持的嵌入式 Linux 平台, Windows CE
1.4 Qt 版本
Qt 按照不同的版本发行, 分为商业版和开源版
商业版
为商业软件提供开发, 他们提供传统商业软件发行版, 并且提供在商业有效期内的免费升级和技术支持服务.
开源的 LGPL 版本:
为了开发自有而设计的开放源码软件, 它提供了和商业版本同样的功能, 在 GNU 通用公共许可下, 它是免费的.
1.5 Qt 的安装
下载地址官网: http://download.qt.io/archive/qt/
- Linux Host
- Qt 5.5.0 for Linux 32-bit (535 MB) (info)
- Qt 5.5.0 for Linux 64-bit (532 MB) (info)
- Qt 5.5.0 for Android (Linux 64-bit, 605 MB) (info)
- Qt 5.5.0 for Android (Linux 32-bit, 608 MB) (info)
- Qt 5.5.0 for Mac (588 MB) (info)
- Qt 5.5.0 for Android (Mac, 652 MB) (info)
- Qt 5.5.0 for Android and iOS (Mac, 1.7 GB) (info)
- Qt 5.5.0 for Windows 64-bit (VS 2013, 650 MB) (info)
- Qt 5.5.0 for Windows 32-bit (VS 2013, 633 MB) (info)
- Qt 5.5.0 for Windows 32-bit (VS 2012, 587 MB) (info)
- Qt 5.5.0 for Windows 32-bit (VS 2010, 585 MB) (info)
- Qt 5.5.0 for Windows 32-bit (MinGW 4.9.2, 959 MB) (info)
- Qt 5.5.0 for Android (Windows 32-bit, 1.0 GB) (info)
- Qt 5.5.0 for Windows RT 32-bit (621 MB) (info)
- OS X Host
- Qt 5.5.0 for Mac (588 MB) (info)
- Qt 5.5.0 for Android (Mac, 652 MB) (info)
- Qt 5.5.0 for Android and iOS (Mac, 1.7 GB) (info)
- Windows Host
- Qt 5.5.0 for Windows 64-bit (VS 2013, 650 MB) (info)
- Qt 5.5.0 for Windows 32-bit (VS 2013, 633 MB) (info)
- Qt 5.5.0 for Windows 32-bit (VS 2012, 587 MB) (info)
- Qt 5.5.0 for Windows 32-bit (VS 2010, 585 MB) (info)
Qt 5.5.0 for Windows 32-bit (MinGW 4.9.2, 959 MB) (info)-- 我采用的
- Qt 5.5.0 for Android (Windows 32-bit, 1.0 GB) (info)
- Qt 5.5.0 for Windows RT 32-bit (621 MB) (info)
Qt 对不同的平台提供了不同版本的安装包, 可根据实际情况自行下载安装
MinGW32 --> Minimalist GNU for Windows 32.
安装过程:
很容易! 一路 next!!
参考链接: 安装 Qt5 并配置环境变量
https://blog.csdn.net/chexlong/article/details/53333647
1.6 Qt 的优点
跨平台, 几乎支持所有的平台
接口简单, 容易上手, 学习 QT 框架对学习其他框架有参考意义.
一定程度上简化了内存回收机制
开发效率高, 能够快速的构建应用程序.
有很好的社区氛围, 市场份额在缓慢上升.
可以进行嵌入式开发.
1.7 为什么学习 Qt
1)学习 GUI 编程, 市场上任何一款产品几乎都带图形界面, 市场上很火的 Android,IOS 编程无非也是 GUI app 编程, GUI 编程都是差不多, 学习 Qt 后再学习 Android,IOS, 那是 So easy. 就算不学习 Android,IOS, 由于 Qt 跨平台特性, 通过 Qt 写的程序可以在 Android,IOS 平台上运行.
2)锻炼编程能力, GUI 编程比后台编程更能锻炼人, 因为你除了核心数据处理外, 还需要协调界面, 同时懂得前端和后台编程, 才能更好地写好程序.
3)为了更好地使用 C++, 学习 Qt 的框架(Qt 是 C++ 实现的应用程序框架), 很多游戏, 后台服务器框架都是使用 C++ 实现.
1.8 如何学习 Qt
第一, 要学好 C++ 基础, 这样函数和类用起来就很简单了;
第二, 要会使用帮助, IDE(Qt Creator)一般都带有帮助文件;
第三, 要会看文档, 文档里面会包含全部的类和函数;
只要会看文档, 就知道了函数或者类的作用, 就会用.
这个是不需要记的.
2, 创建 Qt 项目
2.1 使用向导创建
打开 Qt Creator 界面选择 New Project 或者选择菜单栏 [文件] -[新建文件或项目] 菜单项
弹出 New Project 对话框, 选择 Qt Widgets Application,
选择[Choose] 按钮, 弹出如下对话框
设置项目名称和路径, 按照向导进行下一步,
选择编译套件
向导会默认添加一个继承自 CMainWindow 的类, 可以在此修改类的名字和基类. 继续下一步
即可创建出一个 Qt 桌面程序.
2.2 手动创建
添加一个空项目
选择[choose] 进行下一步. 设置项目名称和路径 -> 选择编译套件 --> 修改类信息 --> 完成(步骤同上), 生成一个空项目. 在空项目中添加文件: 在项目名称上单击鼠标右键弹出右键菜单, 选择[添加新文件]
弹出新建文件对话框
在此对话框中选择要添加的类或者文件, 根据向导完成文件的添加.
代码:
- HelloQt.pro
- QT += widgets SOURCES += \ main.cpp
- main.cpp
- #include <QApplication>
- #include <QWidget> // 窗口控件基类
- #include <QPushButton>
- int main(int argc, char **argv)
- {
- QApplication app(argc, argv);
- QWidget w;
- w.setWindowTitle(QString("主要看气质")); // 设置标题
/* 如果不指定父对象, 对象和对象 (窗口和窗口) 没有关系, 独立
* a 指定 b 为它的父对象, a 放在 b 的上面
* 指定父对象, 有 2 种方式:
* 1)setParent
* 2)通过构造函数传参
* 指定父对象, 只需要父对象显示, 上面的子对象自动显示
*/
- QPushButton b;
- b.setText("^_^"); // 给按钮设置内容
- b.setParent(&w); // 指定父对象
- b.move(100, 100); // 移动坐标
- QPushButton b1(&w); // 通过构造函数传参
- b1.setText("abc");
- w.show();
- app.exec();
- return 0;
- }
总结:
1>. 在窗口中添加按钮
类名: QPushButton
设置按钮显示的内容: setText
移动按钮位置: move
按钮设置父窗口: setParent
设置窗口的大小: resize() resizeFixed()
2>. Qt 的坐标体系:
坐标原点: 左上角
x 轴延伸的方向: 向右递增
y 轴延伸的方向: 向下递增
3>. Qt 内存回收机制
满足什么条件的类不需要用户手动释放内存?
1. 从 QObject 类直接或间接派生
2. 给直接或间接派生出的类, 指定父对象
2.3 .pro 文件
在使用 Qt 向导生成的应用程序. pro 文件格式如下:
- QT += core gui // 模块的名字
- greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
- TARGET = test // 应用程序名
- TEMPLATE = app // 生成的 makefile 的模板类型
- // 源文件
- SOURCES += main.cpp\
- mainwindow.cpp
- // 头文件
- HEADERS += mainwindow.h
- // 窗口设计文件
- FORMS += mainwindow.ui
.pro 就是工程文件(project), 它是 qmake 自动生成的用于生产 makefile 的配置文件..pro 文件的写法如下:
注释
从 "#" 开始, 到这一行结束.
模板变量告诉 qmake 为这个应用程序生成哪种 makefile. 下面是可供使用的选择: TEMPLATE = app
app - 建立一个应用程序的 makefile. 这是默认值, 所以如果模板没有被指定, 这个将被使用.
lib - 建立一个库的 makefile.
vcapp - 建立一个应用程序的 VisualStudio 项目文件.
vclib - 建立一个库的 VisualStudio 项目文件.
subdirs - 这是一个特殊的模板, 它可以创建一个能够进入特定目录并且为一个项目文件生成 makefile 并且为它调用 make 的 makefile.
- #指定生成的应用程序名:
- TARGET = QtDemo
- #工程中包含的头文件
- HEADERS += include/painter.h
- # 工程中包含的. ui 设计文件
- FORMS += forms/painter.ui
- # 工程中包含的源文件
- SOURCES += sources/main.cpp sources/painter.cpp
- # 工程中包含的资源文件
- RESOURCES += qrc/painter.qrc
- greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
这条语句的含义是, 如果 QT_MAJOR_VERSION 大于 4(也就是当前使用的 Qt5 及更高版本)需要增加 widgets 模块. 如果项目仅需支持 Qt5, 也可以直接添加 "QT += widgets" 一句. 不过为了保持代码兼容, 最好还是按照 QtCreator 生成的语句编写.
# 配置信息
CONFIG 用来告诉 qmake 关于应用程序的配置信息.
CONFIG += c++11 // 使用 c++11 的特性
在这里使用 "+=", 是因为我们添加我们的配置选项到任何一个已经存在中. 这样做比使用 "=" 那样替换已经指定的所有选项更安全.
2.4 一个最简单的 Qt 应用程序
- #include <QApplication>
- #include <QWidget>
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- QWidget w;
- w.show();
- return a.exec();
- }
解释:
Qt 头文件没有. h 后缀
Qt 一个类对应一个头文件, 类名就是头文件名
QApplication 应用程序类
管理图形用户界面应用程序的控制流和主要设置.
是 Qt 的整个后台管理的命脉它包含主事件循环, 在其中来自窗口系统和其它资源的所有事件处理和调度. 它也处理应用程序的初始化和结束, 并且提供对话管理.
对于任何一个使用 Qt 的图形用户界面应用程序, 都正好存在一个 QApplication 对象, 而不论这个应用程序在同一时间内是不是有 0,1,2 或更多个窗口.
a.exec()
程序进入消息循环, 等待对用户输入进行响应. 这里 main()把控制权转交给 Qt,Qt 完成事件处理工作, 当应用程序退出的时候 exec()的值就会返回. 在 exec()中, Qt 接受并处理用户和系统的事件并且把它们传递给适当的窗口部件.
3,QtCreator 常用快捷键
有的电脑是 Fn+...
1)帮助文件: F1 (光标在函数名字或类名上, 按 F1 即可跳转到对应帮助文档, 查看其详细用法)
2).h 文件和对应. cpp 文件切换: F4
3)编译并运行: Ctrl + R
4)函数声明和定义 (函数调用和定义) 切换: F2
5)代码注释取消注释: Ctrl + / (选中代码再按快捷键)
6)字体变大变小: Ctrl + 鼠标滚轮向上向下
7)移动代码: 选中所要移动的代码 -> 按住 ctrl + shift -> 键盘方向键
8)查找替换关键字: ctrl + f
9)快速打开代码所在目录: 编辑模式下 -> 选中项目文件 -> 右击 -> 选择 "显示包含的目录", 即可显示项目所在目录(此方法同样可以打开代码文件所在目录)
帮助文档的使用:
比较详细的链接: https://blog.csdn.net/tennysonsky/article/details/48471805
我们使用 Qt 帮助文档, 主要分为这么几步:
1)类使用的相关介绍
2)查看所用部件 (类) 的相应成员函数(功能, 参数, 返回值)
3)查看部件的信号
4)查看部件的事件(所对应的虚函数如何编写)
所要查看的几个重要信息:
公有成员函数: 操作部件属性的相关函数.
公有槽函数: Qt 类中已经定义好的槽函数, 直接可与信号相连接.
信号: 软中断, 如按下按钮触发 pressed() 信号等.
保护成员函数: 通常事件所对应的虚函数放在此处.
事件: 常用事件, 如操作鼠标触发的鼠标事件.
1)当然, 我们可以直接在 "帮助" 模式下的 "索引" 输入框里输入所需查看的类:
2)查看所用部件 (类) 的相应成员函数(功能, 参数, 返回值)
查看所用部件的相应成员函数( 本身的成员函数, 继承过来的成员函数 ), 主要是为了查看这个成员函数如何使
用, 包括函数的功能, 参数, 返回值.
4, 案例代码:
第一个:
- 01_QtTest.pro
- # 模块
- QT += core gui
- # 高于 4 版本, 添加 QT += widgets , 为了兼容 Qt4
- greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
- # 应用程序的名字
- TARGET = mike
- # 指定 makefile 的类型, app
- TEMPLATE = app
- # 源文件 .cpp 文件
- SOURCES += main.cpp\
- mywidget.cpp
- # 头文件 .h 文件
- HEADERS += mywidget.h
- main.cpp
- #include "mywidget.h"
- //QApplication 应用程序类
- //Qt 头文件没有. h
- // 头文件和类名一样
- #include <QApplication>
- int main(int argc, char *argv[])
- {
- // 有且只有一个应用程序类的对象
- QApplication a(argc, argv);
- //MyWidget 继承与 QWidget, QWidget 是一个窗口基类
- // 所以 MyWidget 也是窗口类
- //w 就是一个窗口
- MyWidget w;
- // 窗口创建默认是隐藏, 需要人为显示
- w.show();
- // 让程序一直执行, 等待用户操作
- // 等待事件的发生
- a.exec();
- return 0;
- }
- mywidget.cpp
- #include "mywidget.h"
- MyWidget::MyWidget(QWidget *parent)
- : QWidget(parent)
- {
- }
- MyWidget::~MyWidget()
- {
- }
- mywidget.h
- #ifndef MYWIDGET_H
- #define MYWIDGET_H
- #include <QWidget>
- class MyWidget : public QWidget
- {
- //Q_OBJECT // 信号与槽的时候需要
- public:
- MyWidget(QWidget *parent = 0);
- ~MyWidget();
- };
- #endif // MYWIDGET_H
案例 2:
待续....
来源: https://www.cnblogs.com/wanghui1234/p/8966570.html