1.什么是QT:

Qt(官方发音 [kju:t],音同 cute)是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。

Qt 是纯 C++ 开发的,所以学好 C++ 非常有必要,Qt 还存在 Python、Ruby、Perl 等脚本语言的绑定, 也就是说可以使用脚本语言开发基于 Qt 的程序。开源社区就是这样,好东西就会被派生扩展,到处使用, 越来越壮大。

Qt 支持的操作系统有很多,例如通用操作系统 Windows、Linux、Unix,智能手机系统 Android、iOS、WinPhone, 嵌入式系统 QNX、VxWorks 等等。

2.QT能做什么:

Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部;Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其它功能,比如多线程、访问数据库、图像处理、音频视频处理、网络通信、文件操作等,这些 Qt 都已经内置了。

Qt 是应用程序开发的一站式解决方案,有了 Qt,你就可以高枕无忧了!Qt 本身包含的模块也日益丰富, 一直有新模块和第三方模块加入进来。

大部分应用程序都可以使用 Qt 实现,除了与计算机底层结合特别紧密的,例如驱动开发,它直接使用硬件提供的编程接口,而不能使用操作系统自带的函数库。

1997年,Qt 被用来开发 Linux 桌面环境 KDE,大获成功,使 Qt 成为 Linux 环境下开发 C++ GUI 程序的事实标准。

下面的程序都使用 Qt 开发:WPS、YY语音、Skype、豆瓣电台、虾米音乐、淘宝助理、千牛、暴雪的战网客户端、VirtualBox、Opera、咪咕音乐、Google地图、Adobe Photoshop Album 等。

Linux 也是嵌入式的主力军,广泛应用于消费类电子、工业控制、军工电子、电信/网络/通讯、航空航天、汽车电子、医疗设备、仪器仪表等相关行业。

Qt 虽然也支持手机操作系统,但是由于 Android 本身已经有 Java 和 Kotlin,iOS 本身已经有 Objective-C 和 Swift,所以 Qt 在移动端的市场份额几乎可以忽略。

总起来说,Qt 主要用于桌面程序开发和嵌入式开发。

3.Qt 的历史:

说到 Qt 的发展史,那真是一波三折,几经卖身。

Qt 最早是 1991 年由挪威的 Eirik Chambe-Eng 和 Haavard Nord 开发的, 他们随后于 1994 年 3 月 4 号正式成立奇趣科技公司(Trolltech)。Qt 原本是商业授权的跨平台开发库, 在 2000 年奇趣科技公司为开源社区发布了遵循 GPL(GNU General Public License)许可证的开源版本。

在 2008 年,诺基亚公司收购了奇趣科技公司,并增加了 LGPL(GNU Lesser General Public License)的授权模式。诺基亚联合英特尔利用 Qt 开发了全新的智能手机系统 MeeGo,可惜遭遇了微软木马屠城,诺基亚被迫放弃了 MeeGo, 而 Qt 商业授权业务也于 2011 年 3 月出售给了芬兰 IT 服务公司 Digia。

4.QT和KDE:

之前提到 Qt 原本是商业授权软件,是怎么开源的呢?这就涉及 Qt 和 KDE 的纠葛了。
KDE 是 Linux 操作系统的桌面环境,与 GNOME 桌面是类似的,作为开源桌面它们竞争的情况更为多见。KDE 是采用 GPL 许可证发布的开源软件,而最初 Qt 是商业授权的,存在商业侵权风险,GNOME 则是基于开源 GTK 库的,没有什么商业风险,这一度是 GNOME 优越于 KDE 的特性。由于 Qt 的商业授权,KDE 社区一度混乱纠结,与此同时 GNOME 则如火如荼发展起来了。 KDE 毕竟算是亲儿子,被另一波人欺负,奇趣科技公司当然看不下去了,最后是奇趣科技公司为了赢得开发者的支持,为 Qt 增加了 GPL 的开源授权, 对于开源社区而言,遵循 GPL 使用 Qt 就不需要付费,这为 KDE 解决了燃眉之急。之后 KDE 桌面和 GNOME 都发展壮大起来,都做得越来越好了。

5.GPL和LGPL:

除了商业授权,目前 Qt 的开源授权有两种,一种是 GPL 授权,另一种是 LGPL 授权(诺基亚收购后新增)。

对这两种开源授权,简单来说,使用 GPL 版本的软件一定还是 GPL 的开源软件,无论是使用了 Qt 的程序代码还是修改了 Qt 库代码,都必须按照 GPL 来发布,这是 GPL 的传染性。

GPL 是什么都要开源,这对商业软件应用是不利的,所以诺基亚增加了 LGPL 授权 (第一个 L 可以叫 Lesser 宽松版或 Library 开发库版)。使用 LGPL 授权就可以利用 Qt 官方动态链接库,而不必开放商业代码。只要不修改和定制 Qt 库,仅使用 Qt 官方发布的动态链接库就可以不开源,这是商业友好的授权模式。

其实只要不是做商业,就不太需要关注用什么授权,以 GPL 授权发布程序代码就可以了。

6.如何选择开源协议呢:

世界上的开源协议有上百种,很少有人能彻底搞清它们之间的区别,即使在最流行的六种开源协议——GPL、BSD、MIT、Mozilla、Apache 和 LGPL——之中做选择,也很复杂。

乌克兰程序员 Paul Bagwell 画了一张分析图,说明应该怎么选择开源协议,大家看了一目了然,真是清爽。
最后请参考qt官网;

2.为啥要用QT:

用 Qt 来开发 Windows 桌面程序有以下优点:

- 简单易学:Qt 封装的很好,几行代码就可以开发出一个简单的客户端,不需要了解 Windows API。
- 资料丰富:资料丰富能够成倍降低学习成本,否则你只能去看源码,关于 DirectUI、Htmlayout、aardio 的资料就很少。
- 漂亮的界面:Qt 很容易做出漂亮的界面和炫酷的动画,而 MFC、WTL、wxWidgets 比较麻烦。
- 独立安装:Qt 程序最终会编译为本地代码,不需要其他库的支撑,而 Java 要安装虚拟机,C# 要安装 .NET Framework。
- 跨平台:如果你的程序需要运行在多个平台下,同时又希望降低开发成本,Qt 几乎是必备的。

QT和MFC:

读者经常将 MFC 和 Qt 进行对比,MFC 只能应用在 Windows 平台,而 Qt 是跨平台的,一次编写,到处运行。

另外,Qt 已经封装了底层细节,学习 Qt 将会非常简单;而 MFC 只是给 Windows API 加了一层包装,不了解 Windows API 也学不好 MFC,大家普遍反映 MFC 难学。

我们不能简单地说 Qt 好还是 MFC 好,两者都有用武之地;但是初学者学习 Qt 会比较简单,不用应付那些烦人的 Windows API,很快就能开发出带有漂亮界面的应用程序

3.Qt Creator:

Qt Creator是跨平台的 Qt IDE, Qt Creator 是 Qt 被 Nokia收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 能够跨平台运行,支持的系统包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。

使用QtCreator创建的项目目录中不能包含中文和空格)(切记不然会出现莫名其妙的错误)
QtCreator默认使用Utf8格式编码对文件字符进行编码

为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。GB2312 支持的汉字太少,1995年的汉字扩展规范GBK1.0,支持了更多的汉字。2000年的 GB18030取代了GBK1.0成为了正式的国家标准。Unicode 也是一种字符编码方法,不过它是由国际组织设计,可以容纳全世界所有语言文字的编码方案。

修改Qt Creator文件编码:菜单栏->工具->选项->文本编辑器->行为->文件编码

主界面:

左边第一个是欢迎界面;

下面是文本编辑器;

然后是可视化窗口编辑界面(设计窗口编辑界面);

然后是调试界面;

然后是项目属性设置界面;

然后是查阅文档的界面;

左下角的分别是:

设置调试模式:release和debug;

然后是运行模式:

然后是程序调试:

然后是项目构建:(编译);

右上角的是:

new是新建项目;

open是打开已有项目;

后面是创建项目:

这里要选择模板:Application

填写项目名称和路径(切记不能有中文和空格)

选择编译系统选择qmake即可

然后选择窗口类信息:

第一个是窗口类名; 第二个是父类;

第三个是头文件;

第四个便是源文件;

还有注意的是ui文件;

然后默认;

套件特别重要:

我们选择的mingw套件;

不显示套件的话是安装的时候没有选;

主函数:main.cpp:

#include<Application>(类程序的头文件)
#included"widget"(是你自己创建的头文件)
int main(int argc,char *argv[]){QApplication a(argc,argv);//应用程序的对象,有且只有一个;
widget w;//定义一个类的对象
w.show();//显示窗口(不加这个widget它不会显示出来)return a.exec();//这个特别终于因为这个是消息循环}

我们自定义的头文件:

#ifndef WIDGET_H//防止头文件重复包含
#define WIDGET_H
#include<Qwidget>//自己定义类的父类头文件
我们这边是讲解没有ui文件的后期将会讲到ui文件
class Widget:publice Qwidget
{ Q_OBJECT//信号与槽的必须品
public:
Widget(QWidget *parent=nullptr);//构造函数
~Widget();//析构函数}
#endif

我们的源文件少不了:

#include"widget"//头文件Widget::Widget(Qwidget *parent):Qwidget(parent)
{}
Widget::~Widget(){}

*.pro文件:这是Qt的项目文件注释是#

#项目编译时需要加载哪些模块
QT  +=core gui#编译时要加的模块CONFIG +=c++11#QT支持的c++版本DEFINES += QT_DEPRECATED_WARNINGS#这是低版本的函数给出警告SOURCES += \main.cpp \widget.cpp#源文件的包含
HEADERS += \widget.h
#相应的头文件包含
#部署的默认规则
qnx: target.path = /tmp/$${TARGET}/bin                 #嵌入式
else: unix:!android: target.path = /opt/$${TARGET}/bin #unix
!isEmpty(target.path): INSTALLS += target
#我也不是搞嵌入式的不太清楚

快捷键:

常用快捷键

  • 运行 Ctrl + r

  • 编译 Ctrl + b

  • 注释 Ctrl + /

  • 字体缩放 Ctrl + 鼠标滚轮

  • 查找/替换 Ctrl + f

  • 整行移动 Ctrl + Shift + ↑ 或 ↓

  • 自动对齐 Ctrl + i

  • 帮助文档

  • 第一种:Qt Creator 直接查看 F1

  • 第二种:打开独立的帮助文档程序 assistant

  • 同名.h 和 .cpp 之间的切换 F4

  • 快速添加函数的定义 Alt + Enter 鼠标移动到函数申明上

  • 修改变量名,并应用到所有用到该变量的地方 Ctrl + Shift +r

  • 快速打开输出窗口 Alt + 数字键(1-8)

书签功能,即在某行代码处进行标记,方便以后找到。书签也可以添加文字注。

  • 按Ctrl + M 添加/删除书签

  • 按Ctrl + . 查找并移动到下一个标签

主题配置:菜单栏->工具->选项->文本编辑器

上面是选择系统自带的,当然也可以自己配置一个

  • 比如xml文件 Visual studio white(Qt creator代码样式).xml

  • 把该文件复制到Qt的安装目录下的->Qt\Qt5.14.2\Tools\QtCreator\share\qtcreator\styles目录中

  • 最后进入文本编辑器选择

不会有人不知道QT的历史吧相关推荐

  1. GIT 这么好用,为什么还是有人不知道怎么用它提交代码?

    客户端代码管理工具的变迁: 从 SVN 到 GIT 截止目前,新版的 APICloud Studio 2 仍然处于公测期.APICloud Studio 2 的代码管理客户端,由 SVN 改为了 GI ...

  2. Qt图形界面编程入门(Qt的历史、Qt安装资源链接、Qt Creator简介)

    Qt的历史渊源 Qt是1991年由挪威的奇趣科技(Trolltech)公司开发的跨平台C++图形用户界面(GUI)用程序开发框架,2008年,奇趣科技公司被诺基亚公可收购,Qt也因此成为诺基亚公司旗下 ...

  3. 【Qt】Qt发展历史

    00. 目录 文章目录 00. 目录 01. Qt是什么 02. Qt的历史 03. Qt和KDE 04. Qt和智能手机 05. Qt历史发展 06. 附录 01. Qt是什么 Qt是跨平台的开发库 ...

  4. 不是吧,win10 自带的表情包这么可爱,不会有人不知道?

    不是吧,win10 自带的表情包这么可爱,不会有人不知道? win10这些表情共有 1007 个,格式为 bmp,IT 之家把这些动图中的表情提取出来,小编打包上传到网盘,有需要的用户可以下载使用.下 ...

  5. Qt发展历史及其特点简介

    Qt 是一个跨平台的C++应用程序框架,支持Windows.Linux.Mac OS X.Android.iOS.Windows Phone.嵌入式系统等.也就是说,Qt 可以同时支持桌面应用程序开发 ...

  6. 期货开仓篇1:唐奇安通道开仓法,有人不知道,有人用不好

    先瞄准再开枪,先定势再开仓,行情诡谲多变,开仓时机稍纵即逝,问题是市面上那么多开仓方法,如何选择适合自己的开仓点是很多人头疼的问题.其实哪种开仓方法都能赚钱,就看你有没有悟性,能否触类旁通,一通百通, ...

  7. 已经2022年了为什么还是有人不知道网上投稿发新闻的方法?

    人生天地之间,若白驹过隙,忽然而已.转眼间2021年就剩下不到半个月的时间,马上即将跨入2022年.所有的喜悦.悲伤.过往.经历都将随着2021年尘封入史册.互联网让2021年有了更多精彩,也改变了我 ...

  8. 不会吧,不会吧,全网最细汉诺塔讲解,不会有人不知道吧。面试官直呼内行,看完只想默默找水喝(C语言)

    最干hanoi,看完直呼口干舌燥 Hanoi(汉诺塔问题) 一.什么是汉诺塔 二.分析 1.移动过程 2.应用思想+函数雏形 3.部分代码 三.总代码 四.递归调用 OVER Hanoi(汉诺塔问题) ...

  9. Qt学习之路(2):Hello, world!

    任何编程技术的学习第一课基本上都会是Hello, world!,我也不想故意打破这个惯例--照理说,应该首先回顾一下Qt的历史,不过即使不说这些也并无大碍. 或许有人总想知道,Qt这个单词是什么意思. ...

最新文章

  1. (原创)INTERVAL分区表与RANGE分区表相互转化
  2. iNeuOS工业互联网操作系统部署在华为欧拉(openEuler)国产系统
  3. 《Java8实战》笔记(07):并行数据处理与性能
  4. 编译器vs.代码 谁之过
  5. 用计算机怎样给文章分解,计算机试卷6分解..pdf
  6. pytorch-LSTM的输入和输出尺寸
  7. linux容器安装cmake
  8. 关于一些初级ACM竞赛题目的分析和题解(五)。
  9. 到底什么是模型预测控制MPC(一)
  10. 计算机网络asp视频教程,ASP.net动态网页制作视频教程
  11. bootstrop table api
  12. windows睡眠和休眠的区别
  13. html图像css设置大小,关于html:CSS显示调整大小和裁剪的图像
  14. 接入微信自定义版交易组件3.0,小程序对接视频号操作说明
  15. 动手学深度学习番外篇 01.为什么from d2l import torch as d2l
  16. 【解决方案】智慧国土管理靠什么?EasyCVR综合性视频监控管理系统成支撑
  17. Ubuntu 壁纸下载
  18. SLAM流程之视觉前端
  19. Unity 文字显示动画
  20. Markdown 图片自动上传

热门文章

  1. Oracle存储过程实现BOLL(布林线)计算
  2. 肾上腺髓质素 (12-20)|186027-43-0|KWNKWALSR-NH2
  3. 蓝精灵协会:如何将传统 IP 融入 Web3
  4. miui12.5安装证书/解决无法抓包的问题
  5. 针对LOGO的半透明图片的显示
  6. [QualityCenter]QC是什么?发展历程是怎样?
  7. 多玩我的世界盒子java异常_多玩我的世界盒子里为什么启动不了?
  8. 洛谷P2031 脑力达人之分割字串
  9. 在visual studio 2005中配置iup环境
  10. 计算ORACLE使用内存方法(on AIX)