Qt 5简介

Qt 5概要介绍

在Qt 5这个版本中,Qt Quick成为了Qt的核心。但是Qt 5也继续提供了本地C++强大的功能来完成更好的用户体验,也提供了对OpenGL/OpenGL ES图形加速的完全支持。

Qt 5是自2005年发布的Qt 4.x系列之后的第一个做出大改动的版本。这次的改变主要是使得Qt更加适应未来的需求。

Qt 5.0版本发布了完整的SDK,覆盖了Windows、Mac OS X以及Linux。这表明Qt 5.0版本发布的内容包括:Qt 5框架、IDE(Qt Creator)、示例以及文档。

Qt 5的成功源于Qt 4,因此Qt尽可能的兼容Qt 4.x系列。

Qt 5在架构上清除了内部的一些设计,并且使得Qt 5更加的模块化,更容易学习,更加快速。Qt 4.x系列的应用程序只需要做很少的改变以及简单的用Qt 5重新编译一下即可支持Qt 5。

Qt 5的一些包(主要是开发框架)是随着Qt Creator 2.6.1版本发布的,该版本的Qt Creator也是使用Qt 5编译的。

距离Qt 4发布已经过去7年了,并且目前Qt 4还在停留在主要的分支Qt 4.8版本。

现在Qt第5个大的版本发布了,提供了4个主要的特性:

(1)    令人惊奇的图像处理和表现能力:特别是在特定的环境下,例如:嵌入式和 移动设备上。Qt Quick 2提供了基于Open GL的场景视图,一个粒子系统以及一些渲染特效的集合。Qt Multimedia和Qt GraphicalEffects更加促进了这些特性。

(2)    开发者的生产力和灵活性:使得JavaScript和QML成为一等公民,同时也继续保留了以C++作为基础以及对Qt Widget的支持。附加的Qt WebKit2使得HTML5的开发者更加轻松。

(3)    跨平台的可移植性:由于Qt的核心模块和附加模块使用了新的结构,以及QPA的合并,使得OS开发者的开发工作更加容易了。最终的目标就是使得Qt可以在所有的环境下运行。下一步的工作就是在iOSAndroid上提供完整的Qt支持,这个工作已经开始。

(4)    开放式的开发以及开放式的管理确保了更加广泛的开发者开发和测试Qt 5。

Qt 5包含如下模块:

核心模块:Qt Core,Qt GUI,Qt Multimedia,Qt Netword,Qt Qml,Qt Quick,Qt SQL,Qt Test,Qt WebKit,Qt WebKit Widgets,Qt Widgets。

附加模块:Qt D-Bus,Qt Graphical Effects,Qt ImageFormats,Qt OpenGL,Qt Print Support,Qt Declarative,Qt Script,Qt Script Tools,Qt SVG,Qt XML,Qt XML Patterns。

说明:

Qt的核心模块定义了Qt在所有平台上的基础。它们在Qt所支持的所有开发平台以及测试的目标平台上都是可获取的。它们在Qt 5期间都会保持源代码以及二进制兼容。核心模块对大多数的Qt应用都是通用且有用的。为某一个特定目的实现的模块都放在了Qt的附加模块中,即使这个模块 在所有支持的平台上都可获取。

Qt的核心模块列表如下:

Qt的附加模块为某些特定的目的带来了额外的价值。这些模块也许只是在某些开发平台或者目标平台上可用。这些模块中的一部分可能只包含在Qt针对某些特定平台的发行版本中。

Qt的附加模块列表如下:

接下来在介绍一下Qt的工具部分。

开发Qt应用程序使用到的工具是作为Qt的一部分随Qt版本一起发布的。官方发布的工具支持所有的开发平台。

Qt的工具列表如下:

Qt 5包含的新特性

接下来,我们看看Qt 5都包含哪些新的特性,主要的新特性如下表:

现在我们来逐条详述这些新的特性:

(1)    Amazing Graphics Capability andPerformance

Qt 5使用基于OpenGL的场景视图来加速Qt Quick的图像,使得即使是在硬件受限的移动和嵌入式设备中,用户界面也可以使用动画、图像效果以及粒子系统。

渲染引擎架构的改变所获得的好处也可以从以下示例看出来:

(2)    Qt Quick in Qt 5

Qt Quick为开发QML应用程序提供了必需的基础部件。该技术的最新版本(v2.0)同样引进了一系列的C++类作为Qt Quick 1中QDeclarative等价类的代替物。Qt Quick中新的特性包括:

*Canvas:Canvas提供了类似HTML5中Canvas的API,以及一些额外的特性;

*Shader Effects:该特性允许GLSL的渲染器可以被集成到QML中,并被应用在界面组件以及图像上;

*Particle Effects:用于创建一个多样化的2D粒子系统;

*Sprites:它可以在2D动画对象中使用,并且可以作为粒子系统的源;

*离线存储:离线存储是HTML5Web数据库API,在Qt 5中它是JavaScript API用于在Qt Quick应用程序中存储数据;

*Window:Window提供了顶层的窗口以及屏幕类型用于获取屏幕的分辨率和其它的细节。这在使用Qt Quick开发桌面程序十分有用;

*新的渲染架构:对性能进行优化的基于OpenGL的新的渲染架构。

Qt Graphical Effects模块提供了一系列可应用在Qt Quick应用程序中的ready-made效果,包括soft drop shadow,blur,gow以及colorize。

(3)    WebKit and HTML5

Qt
WebKit是基于开源的WebKit项目的一个web内容渲染引擎。WebKit广泛的支持标准的web技术。Qt 的WebKit模块提供了与Qt
Quick和传统的widgets的集成。该模块将最新的HTML5的优势集成到Qt
5中,这些优势包括:CSS过滤器、动画、视频、Canvas、WebGL以及HTML视频。

(4)    Multimedia

Qt的Multimedia提供了非常多的QML类型和C++类用以处理多媒体内容。它同样提供了必需的API用于获取摄像头和收音机功能。Qt 5将Qt Multimedia模块放在了核心模块中,因此它支持所有主要平台。

(5)    Modularized Qt Libraries

Qt 5将Qt库分割到几个特定的库和模块中。这意味着一个应用程序可以选择它需要的库来使用、编译和部署。

对于Qt模块的列表在前面已经介绍过了。

(6)    Widgets in Qt 5

在Qt 5中Qt Widgets已经被划分为一个单独的模块了。它也是核心模块之一。

(7)    Qt Platform Abstraction

Qt中对于窗口系统依赖的部分已经在Qt5中被完全重写了,基于Qt Platform Abstraction:一个插件架构,允许Qt动态的加载它所处于的窗口系统。这将提供以下几点好处:

*使得窗口系统集成的基础代码处于中心,可以被所有平台重用;

*简化将Qt移植到一个新平台所要做的工作;

*将对窗口系统的依赖从Qt中移除,使得在多个窗口系统下运行的Qt程序的二进制保持一致成为可能。例如:QtLinux二进制文件可以运行在X11和Wayland上。

(8)    New Connection Syntax

除了众所周知且依然可用的连接信号和槽的方式外,对QObject::connect新的重载已经添加到Qt5中,新的语法允许使用指向成员函数的指针来连接信号和槽:

新的语法提供了对信号和槽的兼容性的编译时检查;如果在参数类型之间存在隐式转换,那么这种转换就会自动执行;新的语法也能解决由于typedef或namespaces引起的许多问题。

另外,如果你的编译器支持C++11,你甚至可以直接(将信号)连接到一个lambda函数:

(9)    Connectivity and Networking

Qt
5提供了对IPv6更好的支持以及两种模式的网络。绝大多数的应用程序使用主机名和网络层传输协议现在可以获取IPv6的传输支持。这些应用程序可以选择
同时接受IPv4和IPv6的连接或者是仅仅绑定到两种连接类型中的一种。在使用QNetworkAccessManager发出的HTTP连接
中,IPv4和IPv6连接是并行尝试,并且最先连接成功的那个就投入使用。这对于在这两种连接类型中的一种被限制连接的环境特别有用。

Qt 5同样提供了更好的方式来处理基于套接字的TCP连接以及SSL认证。这意味着开发者现在可以:

*在连接建立之前将一个TCP套接字绑定到一个IP上;

*校验SSL认证链;

*访问遗留系统

严格的客户端认证是许多处理关键数据的应用程序首要考虑的问题。在Qt 5中支持的不透明的私匙使得应用可以从蛇虫中读取私匙,例如:PKCS#11软件保护器用于严格的客户端认证。Qsslkeyexample示范了从设备中读取私匙。

(10)  JSON Support

那些使用简单数据结构存储少量数据的Qt应用程序现在可以选择使用处于复杂数据库后端(需要必需的驱动或者插件访问数据)上层的JSON文档。JSON是从JavaScript衍生出来的基于文本模式的开放标准,这使得它成为了QML应用程序的首选。

Qt Core提供了一系列的类用于解析和生成JSON文档。这些类同样允许你在存于内存中的JSON数据和标准的JSON格式的文档之间进行转换。目标是使得对JSON的同样操作能更加快速。

(11)    User Input

Qt 4已经在C++中提供了对多点触控输入的处理。Qt 5将这种支持扩展到了Qt Quick中,包括了触点的所有信息:触点位置、压力以及速度。

在Qt 5中,鼠标事件的处理在它的预处理器中被加强了。在Qt Quick中,应用程序对于处理鼠标事件有着更多的控制权。在QML文档中的鼠标区域可以传递鼠标滚轮和点击事件,同样也可以忽略传递的时间。

除了这些,Qt 5在支持多鼠标按键的平台上也添加了对多鼠标按键的支持。这主要是为了支持使用Qt开发游戏应用的场景。

Qt 5简介的更多相关文章

  1. Qt 学习之路 2(6):Qt 模块简介

    Home / Qt 学习之路 2 / Qt 学习之路 2(6):Qt 模块简介  豆子  2012年8月26日  Qt 学习之路 2  20条评论 Qt 5 与 Qt 4 最大的一个区别之一是底层架构 ...

  2. [Qt Creator 快速入门] 第1章 Qt Creator简介

    Qt Creator 是一个跨平台的.完整的 Qt 集成开发环境,其中包括了高级C++代码编辑器.项目和生成管理工具.集成的上下文相关的帮助系统.图形化调试器.代码管理和浏览工具等.这一章先对 Qt ...

  3. qt 的简介与使用

    1.图形类的构造,都是通过类的构造函数以及界面初始化这两部分 2.在qtcreator的界面编辑器通过“提升类”的方法,要确定头文件的路径是否正确 3.点击窗口关闭时,销毁窗口内容时,设置属性-> ...

  4. Qt入门(20)——Qt模块简介

    当你安装Qt时,这些模块会被构建到库中.在Qt企业版.Qt评估版和Qt自由版中,包含所有的模块.对于Qt专业版,提供基本的模块--工具.核心.窗口部件.对话框.图标视图和工作区模块.画布模块画布模块提 ...

  5. Qt 学习之路 :Qt 模块简介

    Qt 5 与 Qt 4 最大的一个区别之一是底层架构有了修改.Qt 5 引入了模块化的概念,将众多功能细分到几个模块之中.Qt 4 也有模块的概念,但是是一种很粗的划分,而 Qt 5 则更加细化.本节 ...

  6. 5.Qt模块简介

    Qt 5 与 Qt 4 最大的一个区别之一是底层架构有了修改.Qt 5 引入了模块化的概念,将众多功能细分到几个模块之中.Qt 4 也有模块的概念,但是是一种很粗的划分,而 Qt 5 则更加细化.本节 ...

  7. Qt编程简介与基本知识

    1. 什么是Qt? Qt是一个基于C++的跨平台应用程序和UI开发框架.它包含一个类库,和用于跨平台开发及国际化的工具. 由挪威Trolltech公司开发,后被Nokia收购,目前被Digia公司收购 ...

  8. Qt简介

    一.Qt与Qt Creator简介        Qt是一个跨平台应用程序和 UI 开发框架.使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序. ...

  9. Qt on Android 核心编程

    Qt on Android 核心编程(最好看的Qt编程书!CSDN博主foruok倾力奉献!) 安晓辉 著   ISBN 978-7-121-24457-5 2015年1月出版 定价:65.00元 4 ...

随机推荐

  1. hdu 1531 King

    首先吐槽一下这个题目的题意描述,我看了半天才明白. 下标全部都是乱标的!!!!出题者能不能规范一点下标的写法!!!! 差分约束系统 #include<cstdio> #include< ...

  2. mongodb集群+分片部署(二)

    机器:10.165.38.68    10.165.38.72 部署包:mongodb-linux-x86_64-rhel55-3.0.2.tgz(百度云盘下载地址:http://pan.baidu. ...

  3. Spring Security(12)——Remember-Me功能

    目录 1.1     概述 1.2     基于简单加密token的方法 1.3     基于持久化token的方法 1.4     Remember-Me相关接口和实现类 1.4.1    Toke ...

  4. mobiscroll 插件札记(一)

    mobiscroll 插件笔记(一) 文章参照  http://www.cnblogs.com/headwolf/archive/2013/12/23/3487207.html 最近切一个移动页面,需 ...

  5. CF 604C Alternative Thinking#贪心

    (- ̄▽ ̄)-* #include<iostream> #include<cstdio> #include<cstring> using namespace std ...

  6. 6.Hibernate单向的多对一 关联映射

    1.创建如下项目结构 2.在项目的src下创建hibernate.cfg.xml主配置文件 <?xml version="1.0" encoding="UTF-8& ...

  7. 游戏Demo(持续更新中...)

    格斗游戏 主要用于联系Unity的动画系统,并加入了通过检测按键触发不同的技能. WASD控制方向,AD为技能1,SW为技能2,右键跳跃,连续单机普通连招. 本来是要用遮罩实现跑动过程中的攻击动作,但 ...

  8. Python之生产者&、消费者模型

    多线程中的生产者和消费者模型: 生产者和消费者可以用多线程实现,它们通过Queue队列进行通信. import time,random import Queue,threading q = Queue ...

  9. cmusphinx格式问题

    在windows下.lm和.dict同时为ANSI编码,输出正确,否则输出乱码或不输出结果.

  10. windows 查 mac

    各位,登记一下新电脑 序列号 和 MAC,麻烦大家私信发给我.1.序列号在主机有标签,类似 "Servial NO.   4CV5149L2H"2.MAC,按<“开始”+r  ...