## 1.2 Qt 紀事概覽
Qt Software 前身為 Trolltech(奇趣科技),Trolltech 始創于 1994 年
+ 1996 年 Qt 上市
+ Qt 已成為數以萬計的商業和開源應用程序的基礎
+ Qt 的軟件授權機制具有經受市場檢驗的雙重授權(開源與商業)模式
+ Trolltech 于 2008 年 6 月被 Nokia 收購,加速了其跨平臺開發戰略 閱讀材料:Qt 簡史
Qt 工具包最初是在 1995 年 5 月變為公眾可用的。它最初由 Haavard Nord(Trolltech 的 CEO)和 Eirik Chambe-Eng(Trolltech 的總裁)開發。Haavard 和 Eirik 是在位于挪威特 隆赫姆的挪威科技學院相識的,在那里他們都獲得了計算機科學碩士學位。
Havvard 對 C++圖形用戶界面開發的興趣始于 1988 年,當時他被一家瑞典公司委托設 計并且開發一個 C++圖形用戶界面工具包。
幾年后,在 1990 年夏天,Havvard 和 Eirik 因為一個超聲波圖像方面的 C++數據庫應 用程序在一起工作。這個系統要求能夠在 Unix、Macintosh 和 Windows 上都能運行。那個 夏天中的一天,Haavard 和 Eirik 出去散步享受陽光。當他們坐在公園的一個長椅上, Haavard 說:“我們需要一個面向對象的顯示系統。”由此引發的討論奠定了他們即將創建 的面向對象的多平臺圖形用戶界面工具包的智力基礎。
Haavard 于 1991 年開始和 Eirik 合作設計、編寫最終成為 Qt 的這些類。隨后的一年, Eirik 提出了“信號和槽”的設想-一個簡單并且有效的強大的圖形用戶界面編程范例。 Haavard 實踐了這個想法,并且建立了一個手寫代碼實現。到 1993 年,Haavard 和 Eirik 當時已經開發出了 Qt 的第一個圖形核心并且能夠實現他們自己的窗口部件。同年末, Haavard 提議他們一起開展并且創建“世界上最好的 C++圖形用戶界面工具包”的業務。
1994 年成為兩個程序員不幸的一年,他們沒有客戶,沒有資金,只有一個未完成的產 品,卻希望闖入一個穩定的市場。非常幸運的是他們的妻子都有工作并且愿意支持他們的丈 夫。在這兩年里,Haavard 和 Eirik 認為需要繼續開發他們的產品并且開始盈利。
他們選擇“Q”作為類的前綴,是因為該字母在 Haavard 的 Emacs 字體中看起來非常漂 亮。“t”代表“工具包(toolkit)”,是從“Xt”,X 工具包中獲得的靈感。公司于 1994 年 3 月 4 日創立,最初名為“Quasar Technologies”,后更名為“Troll Tech”,現在改 為“Trolltech”。
1995 年 5 月,通過 Haavard 大學時的一個教授的聯系,挪威 Metis 公司與他們簽訂了 一份基于 Qt 進行軟件開發的合同。大約同一時間,Trolltech 雇傭了 Arnt Gulbrandsen, 正是他設計并實現了一套有獨創性的文檔系統,并且對 Qt 的代碼也作出了貢獻。
1995 年 5 月 20 日,Qt 0.90 被上傳到 sunsite.unc.edu。6 天后,在 comp.os.linux- announce 上發布。這是 Qt 的第一次公開發布。Qt 可以被同時用于 Windows 和 Unix 開發,
它在兩種平臺上提供了相同的應用程序編程接口。從第一天起, Qt 就提供兩種許可版本:
一種是進行商業開發所需的商業許可版本,另一種是進行開源開發的自由軟件版本。 Metis 的合同確保了 Trolltech 的發展,在 10 個月之內沒有人購買 Qt 的商業許可。
1996 年,European Space Agency 購買了 10 份 Qt 商業許可,成了第 2 個 Qt 客戶。憑 著堅定的信念,Eirik 和 Haavard 又雇傭了另外一個開發人員。Qt 0.97 在 5 月底發布,并 且在 1999 年 9 月 24 日,Qt1.0 面世。在這一年底,Qt 已經發展到了 1.1 的版本,共有來 自 8 個不同國家的客戶,他們購買了 18 份商業許可。這一年,在 Matthias Ettrich 的帶 領下,創立了 KDE 項目。
Qt 1.2 在 1997 年 4 月發布。Matthias Ettrich 利用 Qt 建立 KDE 的決定似的 Qt 成為 在 Linux 環境下開發 C++圖形用戶界面的實際標準。Qt1.3 在 1997 年 9 月發布。
Matthias 在 1998 年加入 Trolltech。當年 9 月最后一個 1 系列的版本 1.40 發布。 1999 年 6 月 Qt2.0 發布。Qt2.0 有很多架構上的改變,比它的前幾個版本功能更為強大, 更為成熟。它還具備了 40 個新類和 Unicode 支持。Qt2 有了一個新的開源許可,Q 公共許 可(QPL,Q Public License),它遵循了開源定義。在 1999 年 8 月,Qt 贏得了 LinuxWorld 的最佳庫/工具獎。大約在這個時候,Trolltech Pty Ltd(澳大利亞)建立了。
Trolltech 在 2000 年發布了 Qt/Embedded。它被設計為可以運行在嵌入式 Linux 設備 上,并且提供了它自己的窗口系統作為 X11 的輕型替代品。現在 Qt/Embedded 和 Qt/X11 除 了提供商業許可之外,還可以提供被廣泛使用的 GNU 通用許可(GPL,GNU General Public License)。到 2000 年底,Trolltech 已經創建了 Trolltech Inc.(美國),并發布了第 一個 Qtopia 版本,一個手持設備環境。Qt/Embedded 在 2001 年和 2002 年兩次獲得 LinuxWorld“Best Embedded Linux Solution”(最好的嵌入式 Linux 解決方案)獎。
Qt3.0 在 2001 年發布。現在 Qt 可以用于 Windows、Unix、Linux、嵌入式 Linux 和 Mac OS X。Qt3.提供了 42 個新類和超過 50 萬行的代碼。Qt3.0 在 2002 年贏得了 Software Development Tools 的“Jolt Productivity Aword(震撼生產力獎)”。
2005 年夏,Qt4.0 發布,它大約有 500 個類和 9000 多個函數,Qt4 比以往的任何一個 版本都要全面和豐富,并且它已經裂變成多個函數庫,從而使開發人員可以根據自己的需要 只連接所需要的 Qt 部分。相對于以前的所有 Qt 版本,Qt4 的進步是巨大的,它不僅徹底的 對高效易用的模板容器、高級的模型 /視圖功能、快速而靈活的二維繪圖框架和強大的統一 字符編碼標準的文本查看和編輯類進行了大量改進,就更不必說對那些貫穿整個 Qt 類中的 成千上萬個小的改良了。現如今, Qt4 具有如此廣泛的特性,以至于 Qt 已經超越了作為圖 形用戶界面工具包的界限,逐漸成長為一個成熟的應用程序開發框架。 Qt4 也是第一個能夠 在其所有可支持的平臺上既可用于商業開發又可用于開源開發的 Qt 版本。
同樣在 2005 年,奇趣公司在北京開設了一家辦事處,以便為中國及其銷售區域內的用 戶提供服務和培訓,并且為 Qt/Embedded Linux 和 Qtopia 提供技術支持。
通過獲取一些非官方的語言綁定件(Langauge binding),非 C++程序員也已早就開始 使用 Qt,特別是用于 Python 程序員的 PyQt 語言綁定件。2007 年,公司發布了用于 C#程序員的非官方語言綁定件 Qyoto。同年,Qt Jambi 投放市場,它是一個官方支持的 Java 版 Qt應用程序編程接口。
自奇趣公司(現已被 NOKIA 收購)誕生以來,Qt 的聲望經久不衰,而且至今仍然保持 高漲。取得這樣的成績不但說明了 Qt 的質量,而且也說明了人們都喜歡使用它。在過去的 10 年中,Qt 已經從一個只被少數專業人士所熟悉的“秘密”產品,發展到了如今遍及全世 界擁有數以千計的客戶和數以萬計的開源開發人員的產品。
- 第 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 開發社區