## 1.4 Qt 的授權
Qt 產品的提供是采用雙重授權的軟件許可模式。在該雙重授權模式下, Qt 產品不僅可 在獲得商業許可下針對專利軟件開發,而且還可以在 GPL(通用公共許可證,版本 2 或版本 3)下用于開發免費和開源軟件。 也就是說,Qt 這個軟件本身是開源和免費使用的, 如果 你基于 GPL 協議來開發軟件的話,你開發的東西都要以 GPL 協議發布- 開源并免費提供源 碼。
自從 Qt4.5 版本發布以后,Qt 通過三種授權方式提供: 商業、 LGPL 和 GPL,并且 仍然符合 Qt 的雙重授權戰略,表 1-3 示出了 Qt 的授權方式的簡要說明,表 1-4 對比了授 權方式在具體使用時的不同。
表 1-3 Qt 的授權方式
| Qt 商業版 | Qt 商業授權適用于開發專屬和/或商業軟件。此版本適用于不希望與他人共享源代碼,或者遵循 GNU 寬通用公共許可證 (LGPL) 2.1 版或 GNU GPL 3.0 版條款的開發人員。 |
| --- | --- | --- | --- |
| Qt GNU LGPL v. 2.1 | 此版本 Qt 適用于開發專屬或開源 Qt 應用程序,前提條件是必須遵循 GNU LGPL 2.1 版的條款。 |
| Qt GNU GPL v. 3.0 | 如果您希望將 Qt 應用程序與受 GNU 通用公共許可證 (GPL) 3.0 版本條款限制的軟件一同使用,或 者您希望 Qt 應用程序遵循該 GNU 許可證版本的條款,則此版本 Qt 適用于開發此類 Qt 應用程 序。 |
表 1-4 Qt 授權對照表
| | 商業版 | LGPL 授權版 | GPL 授權版 |
| --- | --- | --- | --- |
| 授權收費 | 收取授權費 | 免費 | 免費 |
| 必須提供更改 Qt 的源代碼 | 不需要, 更改的代碼可以不公 布 | 必須提供源代碼 | 必須提供源代碼 |
| 可以創建專屬應用程序 | 可以,不必公布源代碼 | 可以,但必須遵循 LGPL v.2.1 條款 | 不可以,應用程序受 GPL 限 制,且源代碼必須公開。 |
| 提供更新 | 是,僅限申請有效維護服務的 用戶。 | 是,免費發布。 | 是,免費發布。 |
| 支持 | 提供,條件是維護協議必須有 效。 | 不提供,必須單獨購買。 | 不提供,必須單獨購買。 |
| 運行時收費 | 是 | 否 | 否 |
按照授權協議的不同,Qt 被按不同的版本發行:
Qt 商業版用于商業軟件的開發,提供免費升級和技術支持服務。
Qt 開源版是 Qt 的非商業版本,是為開發自由和開放源碼軟件提供的 Unix/X11 版本。 在 GNU、GPL 或 LGPL 許可證下,它可以免費下載和使用。
此外,Qt 還提供了免費評估版、快照、beta 測試版、預覽版等多種版本,其中免費評 估版 Qt 適用于 Windows、Mac、Linux、嵌入式 Linux 和 Windows CE 平臺,它不但具備 全部功能,還帶有源代碼,Nokia 會在您進行評估期間提供技術支持。而快照、 beta 測試 版、預覽版等版本則得不到 Qt 的支持。
### 1.4.1 Qt 開源版和商業版的不同
在網上經常看到有朋友提問,Qt 開源版和商業版到底有那些不同,有沒有必要使用商 業版等問題,看來還是很有必要向大家介紹一下:
1\. 功能不盡相同
兩者在源碼上基本一致,但開源版缺少一些數據庫插件,因為這些插件都是基于特定數據庫客戶端程序的,很多商業數據庫的客戶端程序并不是開源的,所以插件就無法開源;也就是說,開源版不支持商業數據庫的驅動,一般需要大家自己寫驅動或者是采用第三方的 驅動。另外,在 Windows 版本上,開源版沒有 ActiveQt 這個模塊,它可以用來開發ActiveX 程序。
2\.收費不同
開源版不收費,商業版根據版本不同,費用不同,一般一個 developer license 需要 大約幾千美金。
3\.服務不同
開源版不能享受服務,但可以到一些開放的 maillist 和論壇討論;商業版有一年的免 費技術支持,有問題就直接發給 support@qtsoftware.com,另外商業版中還包括一年的同 產品免費下載支持。
4\.協議不同
這個應該是最本質的不同,使用開源版開發需要遵循 GPL 或者 QPL,而使用商業版就沒 有這個限制,大家可以看看 license agreement,原則上只要不開發和 Qt 競爭的產品就可以了。
總而言之,商業版 Qt 授權包括電子郵件(email)支持,可以獲得升級,讓您能夠開發 完全閉源的軟件。LGPL 對用戶重新連接代碼庫的許可權有一些限制,不能提供商業數據庫 如 Oracle 等的驅動,以及對 Micorsoft Office 二次開發的支持等,有時還有強加某些機 構可能不喜歡的架構要求等其他限制。除此之外,大多數情況下開源版的功能與商業版并無 二致。商業版與開源版功能的詳細比較如表 1-5 所示:
表 1-5 開源版與商業版的比較
| 功能模塊 | 開源版 | 商業版 |
| --- | --- | --- | --- |
| Qt 的基本模塊(工具、核心、窗口部件、對話框) 與平臺無關的 Qt 圖形用戶界面工具包和應用類 | √ | √ |
| [Qt 設計器](http://www.qiliang.net/qt/designer-manual.html) 可視化的 Qt 圖形用戶界面的生成器 | √ | √ |
| [圖標視圖模塊](http://www.qiliang.net/qt/iconview.html) 幾套圖形用戶交互操作的可視化效果 | √ | √ |
| [工作區模塊](http://www.qiliang.net/qt/workspace.html) 多文檔界面(MDI)支持 | √ | √ |
| [OpenGL 三維圖形模塊](http://www.qiliang.net/qt/opengl.html) 在 Qt 中集成了 OpenGL | √ | √ |
| [網絡模塊](http://www.qiliang.net/qt/network.html) 一些套接字,TCP、FTP 和異步 DNS 查詢并且與平臺無關的類 | √ | √ |
| [畫布模塊](http://www.qiliang.net/qt/canvas.html) 為可視化效果,圖表和其它而優化的二維圖形領域 | √ | √ |
| [表格模塊](http://www.qiliang.net/qt/table.html) 靈活的可編輯的表格/電子表格 | √ | √ |
| [XML 模塊](http://www.qiliang.net/qt/xml.html) 通過 SAX 接口和 DOM 的很好的且已經成形的 XML 解析器 | √ | √ |
| [SQL 模塊](http://www.qiliang.net/qt/sql.html) SQL 數據庫訪問類 | 部分驅動(Sqlite、 MySQL) | √ |
| ActiveQt 模塊 | 支持 Office 二次開發等的模塊 | x | √ |
| 售后服務和支持 | x 可單獨購買服務 | √ |
如果要下載上述版本的 Qt,只需訪問網址: http://www.qtsoftware.com/downloads,而商業版本還需要與 Nokia 接洽。
- 第 1 章 走近 Qt
- 1.1 Qt 簡介
- 1.2 Qt 紀事概覽
- 1.3 Qt 套件的組成(以 Qt4.5 為準)
- 1.4 Qt 的授權
- 1.5 Qt 的產品
- 1.6 Qt 的服務與支持
- 1.7 Qt 的最新進展
- 1.8為什么選擇 Qt
- 1.9 問題與解答
- 1.10 總結與提高
- 第 2 章 Qt 的安裝與配置
- 2.1 獲取 Qt
- 2.2 協議說明
- 2.3 安裝 Qt
- 2.4 配置 Qt4 環境
- 2.5 問題與解答
- 2.6 總結與提高
- 第 3 章 Qt 編程基礎
- 3.1 標準 C++精講
- 3.2 Windows 編程基礎
- 3.3 Linux 編程基礎
- 3.4 Mac 編程基礎
- 3.5 問題與解答
- 3.6 總結與提高
- 第 4 章 Qt 4 集成開發環境
- 4.1 常見的 Qt IDE
- 4.2 Qt Creator
- 4.3 Eclipse
- 4.5 問題與解答
- 4.6 總結與提高
- 第 5 章 使用 Qt 基本 GUI 工具
- 5.1 使用 Qt Designer 進行 GUI 設計
- 5.2 使用 Qt Assistant 獲取在線文檔與幫助
- 5.3 使用 Qt Demo 學習 Qt 應用程序開發
- 5.4 問題與解答
- 5.5 總結與提高
- 第 6 章 Qt 4 程序開發方法和流程
- 6.1 開發方法
- 6.2 Hello Qt
- 6.3 幾個重要的知識點
- 6.4 問題與解答
- 6.5 總結與提高
- 第 7 章 對話框
- 7.1 QDialog 類
- 7.2 子類化 QDialog
- 7.3 快速設計對話框
- 7.4 常見內建(built in)對話框的使用
- 7.5 模態對話框與非模態對話框
- 7.6 問題與解答
- 7.7 總結與提高
- 第 8 章 主窗口
- 8.1 主窗口框架
- 8.2 創建主窗口的方法和流程
- 8.3 代碼創建主窗口
- 8.4 使用 Qt Designer 創建主窗口
- 8.5 中心窗口部件專題
- 8.6 Qt4 資源系統專題
- 8.7 錨接窗口
- 8.8 多文檔
- 8.9 問題與解答
- 8.10 總結與提高
- 第 9 章 Qt 樣式表與應用程序觀感
- 9.1 應用程序的觀感
- 9.2 QStyle 類的使用
- 9.3 樣式表概述
- 9.4 使用樣式表
- 9.5 問題與解答
- 9.6 總結與提高
- 第 10 章 在程序中使用.ui 文件
- 10.1 uic 的使用
- 10.2 Ui_YourFormName.h 文件的組成
- 10.3 編譯時加入處理.ui 文件的方法
- 10.4 運行時加入處理.ui 文件的方法
- 10.5 信號與槽的自動連接
- 10.6 問題與解答
- 10.7 總結與提高 本章主要講解了以下內容:
- 第 11 章 布局管理
- 11.1 基本概念和方法
- 11.2在 Qt Designer 中使用布局
- 11.3 基本布局實踐
- 11.4 堆棧布局
- 11.5 分裂器布局
- 11.6 自定義布局管理器
- 11.7 布局管理經驗總結
- 11.8 問題與解答
- 11.9 總結與提高
- 第 12 章 使用 Qt Creator
- 12.1 Qt Creator 概覽
- 12.2 Qt Creator 的組成
- 12.3 快捷鍵和常用技巧
- 12.4 Qt Creator 構建系統的設置
- 12.5 處理項目間依賴關系( Dependencies )
- 12.6 Qt 多版本共存時的管理
- 12.7 使用定位器在代碼間快速導航
- 12.8 如何創建一個項目
- 12.9 實例講解
- 12.10 使用 Qt Creator 調試程序
- 12.11 問題與解答
- 12.12 總結與提高
- 第 13 章 Qt 核心機制與原理
- 13.1 Qt 對標準 C++的擴展
- 13.2 信號與槽
- 13.3 元對象系統
- 13.4 Qt 的架構
- 13.5 Qt 的事件模型
- 13.6 構建 Qt 應用程序
- 13.7 總結與提高
- 附錄 A qmake 使用指南
- A.1 qmake 簡介
- A.2 使用 qmake
- 附錄 B make 命令
- B.1 命令解釋
- B.2 使用 make 自動構建
- 附錄 C Qt 資源
- C.1Qt 官方資源
- C.2 Qt 開發社區