00. 目录

文章目录

  • 00. 目录
  • 01. Qt是什么
  • 02. Qt的历史
  • 03. Qt和KDE
  • 04. Qt和智能手机
  • 05. Qt历史发展
  • 06. 附录

01. Qt是什么

Qt是跨平台的开发库,主要是开发图形用户界面(Graphical User Interface,GUI)应用程序,当然也可以开发非图形的命令行(Command User Interface,CUI)应用程序。 Qt支持众多的操作系统平台,如通用操作系统 Windows、Linux、Unix,智能手机系统 Android、iOS、WinPhone, 嵌入式系统 QNX、VxWorks 等等,应用广泛。当然 Qt 库本身包含的功能模块也日益丰富, 一直有新模块和第三方模块扩充。除了与操作系统底层结合特别紧密的,如驱动开发, 需要利用操作系统本身的函数库实现之外,其他大部分的应用程序开发都可以用 Qt 实现的。 Qt 是纯 C++ 开发的,所以学好 C++ 比较有必要。Qt 还存在 Python、Ruby、Perl 等脚本语言的绑定, 也就是说可以使用脚本语言开发基于 Qt 的程序。开源社区就是这样,好东西就会被派生扩展,到处使用, 越来越壮大。

初学者关于 Qt 编程一个可能的困惑就是 QML 和 C++ 该用哪个来编程,在 Qt4 时代主流的是传统部件(或叫控件)编程,所用的语言一般是 C++。 Qt5 诞生之时,正是手机移动设备蓬勃发展的时候,而传统的 C++ 部件编写的界面对手机应用程序却不是很方便,比如手机屏幕显示随意翻转, 这在传统桌面程序里基本遇不到,谁会将22寸显示器翻过来转过去呢。 为了适应手机移动应用开发, Qt5 将 QML 脚本编程提到与传统 C++ 部件编程相同的高度,力推 QML 界面编程,当然 QML 主要用于手机移动应用程序。 QML 包含大量使用手机移动设备的功能模块,比如基本部件(QtQuick模块)、GPS定位、渲染特效、蓝牙、NFC、WebkKit等等。 简单地说,如果是传统桌面应用程序,使用 C++ 部件开发就足够了,如果学习目标是手机移动应用开发,QML 是更好的选择。 本教程是针对传统 C++ 部件开发的,QML 目前不在考虑范围之内。 关于 QML 编程已经有相关书籍上市,读者可以去搜索 QML 、QtQuick 或 Qt5 等方面的书籍进行选购学习。 学习 QML 之前建议先学 C++ 部件编程,否则遇到底层问题,QML 不一定好处理,通常 QML 也会调用 C++ 编写的插件来完善功能。 另外,在网上看到一本 QML 电子书,感兴趣的可以去下载:pdf。

02. 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。当然好消息是 Digia 于2014年9月宣布成立 Qt Company 全资子公司,独立运营 Qt 商业授权业务。目前 Qt 公司大力推广移动平台开发和商业应用, 总的来说 Qt 历经曲折,现在算是步入正轨了。

03. 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 都发展壮大起来,都做得越来越好了。 关于 KDE 和 GNOME 的故事详情可以围观下面的帖子:KDE/QT vs GNOME/GTK:http://bbs.chinaunix.net/thread-1968232-1-1.html

除了商业授权,目前 Qt 的开源授权有两种,一种是 GPL 授权,另一种是 LGPL 授权(诺基亚收购后新增)。 对这两种开源授权,简单来说,使用 GPL 版本的软件一定还是 GPL 的开源软件, 无论是使用了 Qt 的程序代码还是修改了 Qt 库代码,都必须按照 GPL 来发布,这是 GPL 的传染性。 GPL 是什么都要开源,这对商业软件应用是不利的,所以诺基亚增加了 LGPL 授权 (第一个 L 可以叫 Lesser 宽松版或 Library 开发库版)。 使用 LGPL 授权就可以利用 Qt 官方动态链接库,而不必开放商业代码。只要不修改和定制 Qt 库, 仅使用 Qt 官方发布的动态链接库就可以不开源,这是商业友好的授权模式。 其实只要不是做商业,就不太需要关注用什么授权,以 GPL 授权发布程序代码就可以了。

04. Qt和智能手机

Qt 目前支持主流的 Android、iOS、WinPhone 等智能机操作系统。MeeGo 是基于 Qt 开发的操作系统,由于被诺基亚抛弃了, 只剩一代绝版诺基亚 N9 手机。诺基亚手机部门出售给微软之后,大部分诺基亚手机系统开发人员都被遣散了。 原来诺基亚的一部分人成立新的 Jolla(卓蓝)公司,发布了 MeeGo 的衍生版智能手机系统 Sailfish(旗鱼), 相应的手机和平板也发布开卖了。 另一拨人投靠了 Tizen(泰泽),Tizen 是英特尔和三星力推的智能手机系统,该系统整合了 Limo 和 MeeGo, 因为 MeeGo 系统被诺基亚抛弃,英特尔其实是被出卖了,所以只能联合三星重造智能手机系统 Tizen。 目前基于 Tizen 的首款手机三星 Z1 在印度上市了。在 Tizen 阵营,国内有中兴、百度涉及了。 Qt 开源项目里也有 Qt for Tizen 版本,有兴趣的可以去搜搜。

Qt 公司有专门针对移动开发的商业版本,20 欧元或 25 美元一个月。 不做商业可以无视这个,用开源版本也是可以开发如 Android、iOS、WinPhone 应用的。 本教程关注的是传统桌面操作系统开发的,移动开发可以参考 Qt 官方的文档。

05. Qt历史发展

* 1991–Haavard Nord和Eirik Chambe-Eng开始开发将会支持X11和Windows的Qt

* 1994–Qt Company成立

* 1996–KDE项目由MatthiasEttrich创建(Matthias现为诺基亚Qt发展框架工作)

* 1998 Apr 05Trolltech的程序员在 5 天之内将 Netscape5.0 从Motif移植到 Qt 上

* 1998 Apr 08 KDE Free Qt 基金会成立

* 1998 Jul 09 Qt 1.40 发布

* 1998 Jul 12 KDE 1.0 发布

* 1999 Mar 04QPL1.0 发布

* 1999 Mar 12 Qt 1.44 发布

* 1999 Jun 25 Qt 2.0 发布

* 1999 Sep 13 KDE 1.1.2 发布

* 2000 Mar 20 嵌入式Qt 发布

* 2000 Sep 06 Qt 2.2 发布

* 2000 Oct 05 Qt 2.2.1 发布

* 2000 Oct 30 Qt/Embedded 开始使用GPL宣言

* 2000 Sep 04 Qt free edition 开始使用 GPL

* 2008 Nokia从Trolltech公司收购Qt,并增加LGPL的授权模式

* 2011 Digia从Nokia收购了Qt的商业版权,从此Nokia负责Qt on Mobile,,Qt Commercial由Digia负责

* 根据最新消息,NOKIA已经停止Meltemi系统开发,Qt部门被解散

* 2012 Aug 09 作为非核心资产剥离计划的一部分,诺基亚宣布将Qt软件业务出售给芬兰IT服务公司Digia。

* 2013年7月3日,Digia公司Qt开发团队在其官方博客上宣布Qt 5.1正式版发布。

* 2013年12月11日,Digia公司Qt开发团队宣布Qt 5.2正式版发布。

* 2014年4月,Digia公司Qt开发团队宣布Qt Creator 3.1.0正式版发布。

*2014年5月20日,Digia公司Qt开发团队宣布Qt 5.3正式版发布。

*2019年,Qt团队宣布最新版5.13版本发布。

*2020年,Qt团队宣布6.0版本发布。

06. 附录

6.1 Qt教程汇总
网址:https://dengjin.blog.csdn.net/article/details/115174639

6.2 Qt官网
网址:http://www.qt.io/

6.3 Qt开源项目

网址:http://qt-project.org/

【Qt】Qt发展历史相关推荐

  1. java怎么安装_Java桌面应用程序篇:发展历史以及程序的应用

    java桌面应用印象 因为桌面程序运行在宿主机器上, 所以比如你运行java桌面程序,必然要安装java虚拟机, 也就是相当于在操作系统上再加一层抽象. 这与直接调用api的桌面程序效率相比,或多或少 ...

  2. Linux的发展历史及版本简介

    Linux发展历史及常用版本介绍 由于最近一段时间的学习要基于Linux操作系统.之前在各个版本的Linux之间看的眼花缭乱,那么经过自己查阅和总结之后,对Linux的发展历史和现在目前比较流行的Li ...

  3. 南岸焊接机器人厂_焊接技术的发展历史,世界焊接发展200年回顾,你了解焊接吗?...

    焊接是通过加热.加压,或两者并用,使两工件产生原子间结合的加工工艺和联接方式.焊接应用广泛,既可用于金属,也可用于非金属. 焊接技术的发展历史 公元前3000多年埃及出现了锻焊技术. 公元前2000多 ...

  4. 一张图看懂图像识别算法发展历史

    一张图看懂图像识别算法发展历史

  5. 阿里云分析性数据库的发展历史

    详细内容请点击: 阿里云分析型数据库使用教程 (分析型数据库(AnalyticDB),是阿里巴巴自主研发的海量数据实时高并发在线分析(Realtime OLAP)云计算服务,使得您可以在毫秒级针对千亿 ...

  6. 人工神经网络发展历史及算法应用综述

    作者:柯悦 简 介: 人工神经网络概念自提起以来,它的发展经历了起起落落,而如今人工神经网络也与各个领域相结合,实现它的价值.人工神经网络主要用来处理分类与回归的问题.决定神经网络发展的三个基本要素主 ...

  7. 一般认为计算机发展历史经历,2018年职称计算机考试考前冲刺练习及答案(1)...

    2018年职称计算机考试考前冲刺练习及答案(1) 1.计算机中所有信息采用的存储方式是:(A ) A)二进制 B)十进制 C)十六进制 D)ASCII码 2.用MIPS来衡量的计传输算机性能指示是( ...

  8. 计算机视觉的发展历史

    "看"是人类与生俱来的能力.刚出生的婴儿只需要几天的时间就能学会模仿父母的表情,人们能从复杂结构的图片中找到关注重点.在昏暗的环境下认出熟人.随着人工智能的发展,机器视觉技术也试图 ...

  9. 物联网技术的发展历史及关键技术

    文章目录 1 物联网技术的发展历史及基本概念 1.1 物联网技术的发展历史 1.2 物联网技术的基本概念 2 物联网的核心技术 2.1 传感器技术 2.2 组网技术 2.3 嵌入式技术 2.4 云计算 ...

  10. AI之HCI:人机交互Human-Computer Interaction的简介、发展历史、案例应用之详细攻略

    AI之HCI:人机交互Human-Computer Interaction的简介.发展历史.案例应用之详细攻略 目录 人机交互Human-Computer Interaction的简介 1.人机交互的 ...

最新文章

  1. 3-unit10 iptables
  2. mysql压缩表语句_MYSQL静态表、动态表、压缩表总结
  3. 为什么淘宝、天猫和旺信的 App 不整合成一个?
  4. word2vec中文类似词计算和聚类的使用说明及c语言源代码
  5. 深度学习 用户画像_用户画像架构方案(持续更新)
  6. Qt——线程类QThread
  7. CentOS更改yum源
  8. C#中使用ribbon界面
  9. Xbox360 手柄通过网络远程控制树莓派
  10. 操作系统的目标和作用
  11. 题目234 吃土豆
  12. 解决:RSA host key for [ip] has changed and you have requested strict checking.
  13. ESP8266-NodeMCU驱动TFT-SPI彩屏(驱动芯片ILI9341)- 第一个例程【1】
  14. 【机器学习】李宏毅 - 02 回归
  15. 8口千兆二层非网管工业以太网交换机千兆8口工业交换机
  16. 一文带你走进CI/CD
  17. 算法分析与设计(VC问题团问题独立集问题)
  18. 毕业设计 基于大数据的旅游数据分析与可视化系统
  19. 使用python编写网络爬虫
  20. android measure

热门文章

  1. 软件构造lab2 - 实验报告
  2. 【数据结构】平衡二叉树的插入、删除
  3. Prescan-行人识别
  4. (论文加源码)基于CNN和LSTM的脑电情绪识别(数据集为DEAP和seed)
  5. 使用虚拟登录页面jsp,跳过登录页,直接访问主页面
  6. Elasticsearch搜索操作
  7. 学Python的90个建议
  8. 股票基金实时行情监视小程序(C# wpf)
  9. 阿里云ECS服务器Linux创建新用户
  10. C4996 ‘scanf‘: This function or variable may be unsafe. Consider using scanf_s instead.错误提示