## 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 开发社区