1+1=10

扬长避短 vs 取长补短

Qt版本历史杂记

杂乱的内容,随便写一写,免得以后忘了...

内容比较杂,有些内容没有准确来源,先暂时这样,后面慢慢改

  • Qt4.0 全平台增加GPL授权,开源社区可以在各个平台下适用Qt
  • Qt4.5 全平台增加 LGPL 授权,使得 Qt 可以免费用于商业程序的开发。这尽管促进了Qt生态的发展,但是也对Qt的营收造成影响。(脱离Nokia后,一直在淡化LGPL授权...)
  • Qt4.6 统一了源码Qt everywhere。用户不用纠结下载的Qt源码是适用于Linux/X11、Windows还是Embeded Linux。这也造成官方不好对某个平台(比如嵌入式)单独收费。
  • Qt5.0 起,官方新开发的模块(比如Qt Charts、Qt Data Visualization、Qt VirtualKeyboard、Qt Quick 3D等)不支持LGPL授权,商业用户用到这些模块,需要购买Qt整体的商业授权。
  • Qt提供商业解决方案Qt for Device Creation,引导嵌入式开发用户购买Qt商业授权(淡化Qt可以在LGPL协议下用于嵌入式开发)。
  • Qt WebAssembly 不支持 LGPL 授权,商用的话需要购买商业授权。

Qt公司变迁

先看看公司名字的变迁

年份 公司名 备注
1991 - 创始人开始设计、编写Qt
1994-3-4 Quasar Technologies 公司成立
- Troll Tech 更名
- TrollTech 更名
2008 Nokia Nokia收购TollTech,更名为Qt Software
2009 Nokia 更名为 Qt Development Frameworks
2011 Digia Digia 收购Nokia持有的 Qt商业业务
2012 Digia Digia 收购Nokia持有的 Qt所有剩余业务
2014 Digia Qt Digia 成立子公司 The Qt Company
2016 The Qt Company Digia 拆分出的独立公司

网址

在互联网的时代,网址变来变去对Qt是个灾难。查资料时,不同时期的资料指向不同的网址。更要命的是,Qt官方的一些资料和代码,在这个过程中,似乎也都丢掉了。

  • trolltech.com
  • qtsoftware.com
  • qt.nokia.com
  • qt-project.org
  • qt.digia.com
  • qt.io

Qt版本

Qt 版本很多,可能需要从不同角度看

版本与主要平台和授权协议

  • Qt 主要支持 Linux、Windows、MacOS、Embeded Linux、Android、IOS 等系统

  • 授权协议主要有 商业授权、GPL、LGPL

Qt 版本 年份 主要平台 及 授权
0.90 1995 X11/Linux (商业、FreeQt)
1.0 1996 X11(商业、FreeQt)、Windows(商业)
2.0 1999 X11(商业,QPL)、Windows(商业)
2.2 2000 X11(商业,GPL)、Embeded Linux/QWS/Qtopia(商业、GPL)、Windows(商业)
3.0 2001 X11(商业,GPL)、Embeded Linux/QWS/Qtopia(商业、GPL)、Windows(商业)、MacOS X(商业)
4.0 2005 所有支持平台【X11、Embeded Linux、Windows、MacOS】(商业、GPL2.0)
4.5 2009 所有支持平台【X11、Embeded Linux、Windows、MacOS、...】(商业、GPL2.0、LGPL2.1)
4.6 2010 所有支持平台【X11、Embeded Linux、Windows、MacOS、Symbian、...】(商业、GPL2.0、LGPL2.1)
5.0 2012 【Linux、Windows、MacOS X、Embeded Linux、...】(商业、GPL、LGPL*
5.1 2013 【Linux、Windows、MacOS X、Embeded Linux、Android、iOS、...】(商业、GPL、LGPL*
5.12 2018 【Linux、Windows、MacOS X、Embeded Linux、Android、iOS、...】(商业、GPL、LGPL*)、WebAssembly(商业、GPL)

注意:

  • Nokia收购Qt后,Qt4.5 开始,增加了 LGPL 授权。这对用Qt开发商业软件的小公司是利好。
  • Nokia出售Qt后,LGPL协议对Qt的收入有不小影响。再次自力更生的Qt, 后面新开发的模块中,很多模块(比如Qt Charts、Qt Data Visualization、Qt VirtualKeyboard、Qt Quick 3D等),都不支持LGPL授权。使用时要特别注意。

  • https://doc.qt.io/archives/qt-5.6/supported-platforms-and-configurations.html

  • https://doc.qt.io/archives/qt-5.11/supported-platforms-and-configurations.html
  • https://doc.qt.io/qt-5/qtmodules.html#gpl-licensed-addons

  • https://doc.qt.io/archives/qt-6.3/supported-platforms.html

源码 Qt everywhere

Qt4.6开始,Qt各个版本(linux、maxos、win、embedded linux、wince等)的源代码统一成一份,叫做:Qt everywhere

下载源码时,我们看到的是:

qt-everywhere-opensource-src-4.6.0.tar.gz

而不再是,各个平台下有不同的源码包。

Qt 与嵌入式

理论上,Qt4.6以后,源码统一。不应该再刻意区分才对。但可能是个人对嵌入式不了解的原因,这部分显得特别乱。

  • Qt for Device Creation,这是Qt为嵌入式Linux产品提供的商业解决方案(和Boot to Qt是一个东西?)。

这个东西对于嵌入式开发不是必须的,只需要Qt下载源码,然后交叉编译后进行应用程序开发即可。当然使用商业解决方案会更简单一些。嵌入式开发应该也是官方的主要营收点。

Qt for Device Creation 和 Qt for Application Development 是相对的概念。

  • 前者用于嵌入式开发(设备上主要运行你开发的这个程序);
  • 后者用于PC、平板、手机上的应用程序开发(你开发的程序只是这个设备中众多应用程序中的一个)。

简单捋一捋 Qt4.6之前的嵌入式历史...

历史:Qt/Embedded for Linux

  • Qt的嵌入式版本,简称 Qte 或 Qt/E
  • Qt4.0~Qt4.3阶段,它被称为 Qtopia core
  • 从Qt4.4.1开始,改名为 Qt/Embedded for Linux
  • 从4.5开始,Qt引入LGPL授权

这个东西一直存在,只不过在4.0~4.3阶段,它作为Qtopia-core存在于Qtopia项目中。其他时间,它都是独立存在的。

在Qt4.6之前,下载代码时,看到的是:

qt-embedded-linux-opensource-src-4.5.3.tar.gz
qt-embedded-linux-opensource-src-4.4.3.tar.gz
qt-embedded-free-3.3.8b.tar.gz
qt-embedded-2.3.10-free.tar.gz

历史:Qtopia

  • 基于Qte的类似桌面系统的应用环境(主要包括Qtopia PDA和Phone两个版本)。
  • Qt4.0~Qt4.3阶段,它里面包含(Qte,即Qtopia core)
  • 从Qt4.4.1开始,不再包含Qte,且改名为Qt Extended
  • 2009年,Nokia终止项目Qt Extended

Qtopia是基于Qte开发的类似桌面系统的环境。即使没有它,也可以使用Qte来开发桌面程序。

2009年,Nokia终止该项目后,该项目中的一些优秀的设计理念,被吸收到了Qt-Mobility项目中。当然,后来Qt-Mobility随着Nokia的衰落而衰落了。

年份 产品 备注
2000 Qt/Embedded 发布 (Qt/Embedded也就是 Qtopia Core),GPL+商业
2004 Qtopia 发布2.0.0和2.1.0
2005 Qtopia 发布2.1.1、2.1.2和2.2.0
2006 Qtopia 发布4.1.0~4.1.7和4.2.0
2007 Qtopia 发布4.2.1~4.2.5
2008 Qtopia 发布4.3.1
2009 Qtopia 发布4.3.2和4.3.3
2008 Qt Extended 发布4.4.1和4.4.2,构建系统qbuild取代老的qtopiamake
2009 Qt Extended 发布4.4.3
2009-3-5 Qt Extended Nokia终止该项目
2009 Qt Extended Improved Openmoko克隆Qt Extended的代码
- QtMoko Qt Extended Improved重命名

不复存在的网址: * qtopia.net * qtextended.org

Qt与C++标准

Qt版本 C++标准 备注
Qt < 5.0 无标准要求(不依赖 STL) -
Qt >= 5.0 C++98 -
Qt >= 5.7 C++11 -
Qt >= 6.0 C++17 -
  • https://www.qt.io/resources/videos/qt-and-c20

参考

  • https://wiki.qt.io/Qt_History
  • https://www.qt.io/blog/2013/05/21/introducing-boot-to-qt-a-technology-preview
  • https://doc.qt.io/archives/
  • https://en.wikipedia.org/wiki/Qt_(software)
  • https://en.wikipedia.org/wiki/List_of_platforms_supported_by_Qt

Qt qt, ui

Comments