问答百科

Qt是什么


Qt 是一个跨平台的 C++应用程序开发框架。广泛用于开发 GUI 程序,这种情况下又被称为部件工具箱。也可用于开发非 GUI 程序,比如控制台工具和服务器。

Qt 被用于 OPIE、Skype、VLC media player、Adobe Photoshop Elements、VirtualBox 与 Mathematica 以及被 Autodesk、欧洲空间局、梦工厂、Google、HP、KDE、卢卡斯影业、西门子公司、沃尔沃集团, 华特迪士尼动画制作公司、三星集团、飞利浦、Panasonic 所使用。

它是 Digia 公司的产品。Qt 使用标准的 C++和特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏。通过语言绑定,其他的编程语言也可以使用 Qt。

Qt 是自由且开放源代码的软件,在 GNU 宽通用公共许可证(LGPL)条款下发布。所有版本都支持广泛的编译器,包括 GCC 的 C++编译器和 Visual Studio。

历史

Haavard Nord 和 Eirik Chambe-Eng 于 1991 年开始开发“Qt”,1994 年 3 月 4 日创立公司,最早名为 Quasar Technologies,然后更名为 Troll Tech,之后又再次更名为 Trolltech,中文名是“奇趣科技”,2008 年 6 月 17 日被 NOKIA 公司收购,以增强该公司在跨平台软件研发方面的实力,更名 Qt Software。

该工具包名为 Qt 是因为字母 Q 在 Haavard 的 Emacs 字体特别漂亮,而“t”代表“toolkit”,灵感来自 Xt,X toolkit。

2009 年 5 月 11 日,诺基亚 Qt Software 宣布 Qt 源代码管理系统面向公众开放,Qt 开发人员可通过为 Qt 以及与 Qt 相关的项目贡献代码、翻译、示例以及其他内容,协助引导和塑造 Qt 未来的发展。为了便于这些内容的管理,Qt Software 启用了基于 Git 和 Gitorious 开源项目的 Web 源代码管理系统。

在推出开放式 Qt 代码库的同时,Qt Software 在其网站发布了其产品规划(Roadmap)。其中概述了研发项目中的最新功能,展现了现阶段对 Qt 未来发展方向的观点,以期鼓励社区提供反馈和贡献代码,共同引导和塑造 Qt 的未来。2012 年 8 月 9 日,Digia 宣布已完成对诺基亚 Qt 业务及软件技术的全面收购,并计划将 Qt 应用到 Android、iOS 及 Windows 8 平台上。

支持平台

使用 Qt 开发的软件,相同的代码可以在任何支持的平台上编译与运行,而不需要修改源代码。会自动依平台的不同,表现平台特有的图形界面风格。

  • Linux/X11:用于 X Window System(如 Solaris、AIX、HP-UX、Linux、BSD)。支持 KDevelop 和 Eclipse IDE 集成
  • Mac:用于 Apple Mac OS X。基于 Cocoa 框架。支持 Universal Binary。支持以 Xcode 编辑、编译和测试。
  • Windows:用于 Microsoft Windows。支持 Visual Studio 集成,也可以使用 MinGW 编译
  • Embedded Linux:用于嵌入式 Linux。可以透过编译移除不常使用的组件与功能。透过自己的视窗系统 QWS,不需依赖 X Window System,直接写入 Linux 帧缓冲。可以减少存储器消耗。并提供虚拟帧缓冲 QVFb,方便在桌面系统上进行嵌入式测试。
  • Windows CE / Mobile :用于 Windows CE
  • Symbian:用于 Symbian platform
  • Maemo/MeeGo:用于 Maemo
  • Wayland –用于 Wayland 显示服务器,Qt 应用程序可以在运行时切换图形后端,如 X 与 Wayland。

授权模式

Qt 开放源代码,并且提供自由软件的用户协议。使得它可以被广泛地应用在各平台上的开放源代码软件开发中。

Qt 提供三种授权方式。三种授权方式的功能、性能都没有区别,仅在于授权协议的不同。LGPL 和 GPL 是免费发布,商业版则需收取授权费。

  • Qt 商业版 – Qt 商业授权适用于开发专属和/或商业软件。此版本适用于不希望与他人共享源代码,或者遵循 GNU 宽通用公共许可证(LGPL)2.1 版或 GNU GPL 3.0 版条款的开发人员。提供了技术支持服务。可以任意的修改 Qt 的源代码,而不需要公开。
  • GNU LGPL v. 2.1- Qt 4.5.0 及以后的版本开始遵循 GNU LGPL。LGPL 允许链接到它的软件使用任意的许可证,可以被专属软件作为类库引用、发布和销售。可以购买支持服务。
  • GNU GPL v. 3.0 – 如果您希望将 Qt 应用程序与受 GNU 通用公共许可证(GPL)3.0 版本条款限制的软件一同使用,或者您希望 Qt 应用程序遵循该 GNU 许可证版本的条款,则此版本 Qt 适用于开发此类 Qt 应用程序。可以购买支持服务。

Qt 的图形用户界面的基础是 QWidget。Qt 中所有类型的 GUI 组件如按钮、标签、工具栏等都派生自 QWidget,而 QWidget 本身则为 QObject 的子类。Widget 负责接收鼠标,键盘和来自窗口系统的其他事件,并描绘了自身显示在屏幕上。每一个 GUI 组件都是一个 widget,widget 还可以作为容器,在其内包含其他 Widget。

QWidget 不是一个抽象类别。并且可以被放置在一个已存在的用户界面中;若是 Widget 没有指定父 Widget,当它显示时就是一个独立的视窗、或是一个顶层 widget。QWidget 显示能力包含了透明化及 Double-Buffering。Qt 提供一种托管机制,当 Widget 于创建时指定父对象,就可把自己的生命周期交给上层对象管理,当上层对象被释放时,自己也被释放。确保对象不再使用时都会被删除。

智齿客服