Qt的基本概念-WIKI

发布于 16 天前  90 次阅读


简述

wiki

Qt(/ˈkjuːt/,发音同“cute”[4][5][6])是一个跨平台的C++应用程序开发框架。广泛用于开发GUI程序,这种情况下又被称为部件工具箱。也可用于开发非GUI程序,比如控制台工具和服务器。Qt使用于OPIE、Skype、VLC media player、Adobe Photoshop Elements、VirtualBox与Mathematica[7]以及被Autodesk [8][9]、欧洲空间局[10]、梦工厂[11][12]、Google、HP[13]、KDE、卢卡斯影业[14]、西门子公司[15]、沃尔沃集团[16], 华特迪士尼动画制作公司[17]、三星集团[18]、飞利浦[19]、Panasonic [20]所使用。

它是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[21]。

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平台上。[22]

支持平台

使用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。[23][24]

授权模式

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

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

  • 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经过多年发展,Qt不但拥有了完善的C++图形库,而且近年来的版本逐渐集成了数据库、OpenGL库、多媒体库、网络、脚本库、XML库、WebKit库等等,其核心库也加入了进程间通信、多线程等模块,极大的丰富了Qt开发大规模复杂跨平台应用程序的能力,真正意义上实现了其研发宗旨“Code Less; Create More; Deploy Anywhere.”。

由于各家编译器规格不同,Qt本身为了跨平台兼容性,只能以“最低兼容规格”来设计。因此Qt必须具备RTTI、动态创建、Persistence/Serialization的基础建设,以及建构出自己的容器组件。

下列模块提供一般的软件开发
- QtCore—QtCore模块是所有基于Qt的应用程序的基础,提供信号与槽的对象间通信机制、IO、事件和对象处理、多线程
- QtGui—包含了开发图形用户界面应用程序所需的功能。使用其支持的各个平台的原生图形API。支持反锯齿、向量形变。支持ARGB顶层widget
- QtMultimedia—提供了用于多媒体内容处理的QML类型集和C++类集。同时提供访问摄像头及音频功能的API。包含的Qt音频引擎支持三维音频回放及管理。
- QtNetwork—提供了网络程序设计功能。支持通用协议,如HTTP、FTP和DNS,包括对异步HTTP 1.1的支持。与较低层的TCP/IP和UDP协议,如QTcpSocket、QTcpServer和QUdpSocket
- QtOpenGL—提供在应用程序中使用OpenGL和OpenGL ES加入3D图形。在Windows平台上亦支持Direct3D
- QtOpenVG-提供OpenVG绘图支持的一个插件
- QtScript—包含完全集成的ECMA标准脚本引擎。提供信号与槽机制简化对象间通信和QtScript调试器。
- QtScriptTools—额外的Qt Script组件
- QtSql—将数据库集成至应用程序。支持所有主要的数据库驱动包括ODBC、MySQL、PSQL、SQLite、ibase、Oracle、Sybase、DB2。
- QtSvg—支持SVG格式
- QtWebKit—集成WebKit,提供了HTML浏览器引擎,便于在原生应用程序中嵌入网络内容和服务。
- QtXml—提供了XML文档的阅读器和编写器、支持SAX和DOM。
- QtXmlPatternsl—提供了XQuery和XPath引擎支持。
- Phonon—集成Phonon,支持跨平台应用程序播放音频和视频内容。Qt5开始不支持Phonon。
- Qt3Support—模块提供兼容Qt 3.х.х版本的程序库
- QtDeclarative [34] - engine for declaratively building fluid user interfaces in QML

作业于Qt附带工具的模块
- QtDesigner—提供扩展Qt Designer的类别。
- QtUiTools
- QtHelp—协助集成在线文件到应用程序中。
- QtTest—提供单元测试框架和鼠标和键盘模拟功能。集成Visual Studio和KDevelop。

下列模块用于Unix开发
- QtDBus

下列模块用于Windows开发
- QAxContainer
- QAxServer

总结

以上内容全部摘自wiki,原文链接地址https://zh.wikipedia.org/zh/Qt。

我就是懒得打那么多字介绍了。下面开始正式讲解Qt了


公交车司机终于在众人的指责中将座位让给了老太太