Qt 不同版本以及不同协议的选择

❗本文不是法律建议,如有法律问题,请咨询您的律师或依照利益相关方的法律文本处理

Qt 是目前较为流行而且功能完备的 C++ 图形化开发框架(GUI Framework),其运营者是商业公司 Qt Group (Nasdaq Helsinki: QTCOM)。出于商业化运营的考虑和拥抱开源的策略,Qt 有两种不同的授权许可协议。同时,作为一个历史悠久的跨平台开发库,Qt 有很多不同的版本。如何选择合适的授权协议以及 Qt 版本,是十分值得讨论的。

Qt 版本的选择

从大版本上,选择主要有三个:

  • Qt 4:最老、中文资料极其丰富
  • Qt 5:上一代主流 Qt
  • Qt 6:Qt 公司当前主推的最新版本

在这里,Qt 5 是最应该选择的。不选择 Qt 4 或 Qt 6 的理由是:

  1. Qt 4 太过老旧,缺乏对新的 C++ 标准的支持(C++11 之后 C++ 标准迭代速度非常快)
  2. Qt 4 资料虽然多,但是普遍老旧,很容易把人带到沟里面去
  3. Qt 6 虽好,但不支持 WIndows 7,考虑到 Win7 极度庞大的用户量,很难理解为什么一个软件为了跨平台选择了 Qt 却不支持 Win7

小版本上,选择有两个:

  • Qt 5.12:LTS,保持了离线下载模式
  • Qt 5.15:LTS,需要在线下载

这里仁者见仁,智者见智,但总体来讲因为区别不大,Qt 5.12 更值得选择,这样可以免于遭受某些特殊网络环境的困扰。

📍国内下载 Qt 可以去清华大学 TUNA 协会的源

Qt 协议的选择

下列内容仅供参考,请以 Qt Group 的官方说明为准。

商业协议

这个协议基本上可以概括为:钱是万能的

这个协议在一定条件下允许:

  • 获得授权的组织可以许可成员使用
  • 获得授权的组织可以自行修改 Qt 并闭源
  • 获得授权的组织使用 Qt 的组件时不需要担心 GPL 的“传染性”

缺点就一个:要钱,还不少

具体可以参见 Qt Commercial Licensing

开源协议

微软的经营策略早就告诉我们,拥抱开源就是拥抱市场,拥抱市场才能圈地挣钱,卖许可证这事叫涸泽而渔,不能做大做强。因此,Qt 很贴心地提供了开源授权。

Qt 的部分组件分别以不同的开源组件进行授权,同时 Qt 还使用了数量庞大的开源软件,因此有可能会遇到一些需要遵守第三方开源协议的情况(其实比较困难,主要是因为 GPL 太狠了)。

Qt 主要使用了两个开源协议:

这就意味着:

  • 需要为用户提供一份 Qt 和你编写的软件的源代码(或者是明确地书面给出源代码获取方式)
  • 对于使用 GPL 的部分,所有你所编写的代码均要如上操作
  • 对于 LGPL 的部分,可以通过动态库链接的方式进行调用(可以理解为不删、不加、不改、不打包)而无需开源

因此,在使用 Qt 的开源授权许可的时候,最重要的就是搞清楚对应的模块采用的是何种开源协议,可以去 https://www.qt.io/product/features 处进行查询。

部分使用 LGPL 的组件模块如下:

  • Qt Core
  • Qt GUI
  • Qt Network
  • Qt QML
  • Qt Quick Dialogs
  • Qt Quick Layouts
  • Qt D-Bus
  • Qt Quick
  • Qt Quick Controls
  • Qt Quick Tests
  • Qt Test
  • Qt Widgets
  • Qt Multimedia
  • Qt Multimedia Widget
  • Qt 3D
  • Qt Bluetooth
  • Qt Concurrent
  • Qt Help
  • Qt Image Formats
  • Qt NFC
  • Qt OpenGL
  • Qt Positioning
  • Qt Print Support
  • Qt Quick Widgets
  • Qt Remote Objects
  • Qt SCXML
  • Qt Sensors
  • Qt Serial Bus
  • Qt Serial Port
  • Qt SVG
  • Qt UI Tools
  • Qt WebChannel
  • Qt WebEngine
  • Qt WebSockets
  • Qt WebView
  • Qt XML
  • Qt SQL
  • Qt State Machine
  • Qt PDF

发表评论