Qt 简介
Qt (发音同 cute)是一个跨平台的C++开发工具,有时又被称为C++部件工具箱。Qt被用在KDE桌面环境、Opera、Google Earth、Skype、Adobe Photoshop Album和VirtualBox的开发中。它是挪威Qt Software 的产品,2008年6月17日被芬兰的诺基亚(Nokia)公司收购,以增强该公司在跨平台软件研发方面的实力。
使用Qt开发的软件,可以在任何支持的平台上编译与运行,而不需要修改源代码。可以实现本平台的图形界面风格,也可实现其它平台的图形界面风格。比如可以在Microsoft Windows平台下编译出具有苹果公司Mac OS图形界面风格的应用程序。
经过多年发展,Qt不但拥有了完善的C++图形库,而且近年来的版本逐渐集成了数据库、OpenGL库、多媒体库(Phonon)、网络库、脚本库、XML库、WebKit库等等,其内核库也加入了进程间通信、多线程等模块,极大的丰富了Qt开发大规模复杂跨平台应用程序的能力,真正意义上实现了其研发宗旨“Code Less; Create More; Deploy Anywhere.”。
Qt中使用了C++的非标准扩展,用在编译前增加一个名为moc的预处理器来实现,moc将Qt代码处理成标准C++代码。
Qt开放源代码,并且提供自由软件的用户协议。使得它可以被广泛地应用在各平台上的开放源代码软件开发中。
2009年5月11日,诺基亚Qt Software 宣布 Qt源代码管理系统面向公众开放,Qt 开发人员可通过为 Qt 以及与 Qt 相关的项目贡献代码、翻译、示例以及其他内容,协助引导和塑造 Qt未来的发展。为了便于这些内容的管理,Qt Software 启用了基于 Git 和 Gitorious 开源项目的Web 源代码管理系统。
在推出开放式 Qt 代码库的同时,Qt Software 在其网站发布了其产品规划(Roadmap)。其中概述了研发项目中的***功能,展现了现阶段对 Qt 未来发展方向的观点,以期鼓励社区提供反馈和贡献代码,共同引导和塑造 Qt 的未来。
Qt 提供三种授权方式[2]:
Qt 商业版 – Qt 商业授权适用于开发专属和/或商业软件。此版本适用于不希望与他人共享源代码,或者遵循 GNU 宽通用公共许可证 (LGPL) 2.1 版或 GNU GPL 3.0 版条款的开发人员。
GNU LGPL v. 2.1- Qt 4.5.0 及以后的版本开始遵循 GNU LGPL,这些版本的 Qt 适用于开发专属或开源 Qt 应用程序,前提条件是必须遵循 GNU LGPL 2.1 版的条款。
GNU GPL v. 3.0 – 如果您希望将 Qt 应用程序与受 GNU 通用公共许可证 (GPL) 3.0 版本条款限制的软件一同使用,或者您希望 Qt 应用程序遵循该 GNU许可证版本的条款,则此版本 Qt 适用于开发此类 Qt 应用程序。
关于如何正确选择合适的Qt授权协议,可以参考: Qt GPL, LGPL&Commercial License [3]。
支持平台
Qt for X11:用于 X Window System (Unix、Linux、BSD)。支持 KDevelop IDE 集成
Qt for Mac:用于 Apple Mac OS X。支持 Cocoa 和 Carbon 框架。支持以 Xcode 编辑、编译和测试。
Qt for Windows:用于 Microsoft Windows。支持 Visual Studio 集成
Qt for Embedded Linux:用于嵌入式Linux。可以通过编译移除不常使用的组件与功能。通过自己的视窗系统QWS,不需依赖X Window System,直接写入Linux 帧缓冲。可以减少存储器消耗。并提供虚拟帧缓冲 QVFb,方便在桌面系统上进行嵌入式测试。
Qt for Windows CE:用于 Windows CE
Qt for S60:用于 S60
语言绑定除了C++外,Qt还为其它多种计算机语言提供了应用程序接口,您也可以使用这些语言开发Qt应用程序。
PyQt:Python绑定
QtRuby:Ruby绑定
Qt Jambi:Java绑定
Qyoto:C# 或其他 .NET 语言绑定,同时也是Kimono(KDE API 的 .NET 绑定)的基础。
QtAda:Ada绑定
FreePascal QT4:Pascal绑定
Perl Qt4:Perl绑定
PHP Qt:PHP绑定
Qt Haskell:Haskell绑定
lqt:Lua绑定
Qt 的 hello world
- Qt 的 hello world
- #include <QtGui/QApplication>
- #include <QtGui/QLabel>
- int main(int argc, char *argv[])
- {
- QApplication app(argc, argv);
- QLabel label("Hello, world!");
- label.show();
- return app.exec();
- }
#p#
Qt 附带的工具
Qt Creator,轻量级的Qt/C++ IDE开发环境。
Qt Designer,界面设计师。
Qt Assistant,Qt文档。
Qt Liguist,翻译工具,使得非开发的翻译人员亦可进行翻译
qmake,跨平台构建工具,可简化跨不同平台进行项目开发的构建过程。qmake 可以自动生成 Makefile,还可同样生成 Microsoft Visual Studio 项目档
QVFb,虚拟帧缓存设备,模拟framebuffer设备(尺寸、色深),还可以通过skin模拟硬件键盘的布局(包括特殊的按键),可以便捷在桌面系统机器上开发嵌入式程序
使用Qt开发的程序一些出名的例子如下:
谷歌地球,三维虚拟地图软件。
eva,Linux版QQ聊天软件。
KDE,著名的桌面环境。
KDELibs,一个许多KDE程序都使用的共享库,如Amarok、K3b、KDevelop、KOffice等。
Last.fm播放器,著名的互联网音乐社区网站的桌面客户端。
LMMS,一个开放源码的音乐编辑软件
LyX,使用Qt作为界面的LaTeX软件。
MythTV,开源的数字视频录制软件。
Opera,著名的网页浏览器。
Qterm,Linux下的BBS软件。
Scribus,桌面排版软件。
Skype,一个使用人数众多的基于P2P的VOIP聊天软件。
VirtualBox,虚拟机程序。
Xconfig,Linux的Kernel配置工具
VLC多媒体播放器,一个体积小巧、功能强大的开源媒体播放器,从0.9版开始有Qt界面。
Adobe Photoshop Album
Qt Extended
Qt 相关资料
Qt 官方网站 - http://qt.nokia.com/
Qt 中文官方网站 - http://qt.nokia.com/title-cn
Qt 在线文档 - http://doc.qt.nokia.com/
Qt 社区 - http://qtcentre.org/
Qt for S60/Symbian开发 - http://www.forum.nokia.com/Resources_and_Information/Tools/Runtimes/Qt_for_S60/
Qt for Maemo (N800/N810) 开发 - http://qt4.garage.maemo.org/
Qt on Facebook – Click here to join
Qt on Twitter – Click here to follow
Qt on LinkedIn – Click here to join
Qt Video Hub 视频中心 - http://u.youku.com/QtChina