Qt 5简介

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开发游戏应用的场景。

时间: 2024-11-08 00:07:58

Qt 5简介的相关文章

Qt 与 Qt Creator 简介

该文章原创于Qter开源社区(www.qter.org),作者 yafeilinux,转载请注明出处! 一.Qt 与 Qt Creator 简介 Qt 是一个跨平台应用程序和 UI 开发框架.使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序. Qt Creator 是全新的跨平台 QtIDE(集成开发环境),可单独使用,也可与 Qt 库和开发工具组成一套完整的 SDK(软件开发工具包). 其中包括:高级 C++ 代码编辑器,项目和生成管理工

Qt on Android:Qt Quick 简介

Qt Quick 是 Qt 提供的一种高级用户界面技术,使用它可轻松地为移动和嵌入式设备创建流畅的用户界面.在 Android 设备上, Qt Quick 应用默认使用 OpenGL ES ,渲染效率很高,你可以用它创建非常炫非常酷非常迷人的界面. Qt Quick 模块是开发 QML 应用的标准库,提供了使用 QML 创建用户界面所需的一切东西,包括可视化类型.交互类型.动画.模型与视图.粒子效果与着色效果等等. Qt Quick 提供了两组 API : QML API ,它提供了使用 QML

Qt的简介

一.Qt的简介 Qt是一个跨平台的C++图形用户界面应用程序框架.它为应用程序开发者提供建立艺术级图形界面所需的所有功能.它是完全面向对象的,很容易扩展,并且允许真正的组件编程.基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西. 二.Qt的由来和发展 Haavard Nord 和Eirik Chambe-Eng于1991年开始开发"Qt". 1994年3月4日创立公司

qt 的简介与使用

1.图形类的构造,都是通过类的构造函数以及界面初始化这两部分 2.在qtcreator的界面编辑器通过“提升类”的方法,要确定头文件的路径是否正确 3.点击窗口关闭时,销毁窗口内容时,设置属性->setAttribute(Qt::WA_DeleteOnClose, true);进行销毁 4.qt 可以通过代码动态创建控件存放在ui界面上.主要是要获取ui的顶级窗口指针,进行构造时指针传递 5.C++ 错误捕获机制,一般是try  throw catch

QT QMutex简介(QT多线程编程一)

QMutex简介 QMutex类提供了一种保护一个变量或者一段代码的方法,这样可以每次只让一个线程访问它.这个类提供了一个lock()函数用于锁住互斥量,如果互斥量是解锁状态,那么当前线程立即占用并锁定它:否则,当前线程会阻塞,直到这个互斥量的线程对它解锁为止.QMutex类还提供了一个tryLock()函数,如果该互斥量已经锁定,它就会立即返回. [cpp] view plain copy  #include <QCoreApplication> #include <stdio.h&g

Qt编程简介与基本知识

1. 什么是Qt? Qt是一个基于C++的跨平台应用程序和UI开发框架.它包含一个类库,和用于跨平台开发及国际化的工具. 由挪威Trolltech公司开发,后被Nokia收购,目前被Digia公司收购. 2. Qt的特性? 一次编程,到处编译 3. Qt的产生 4. Qt的发行版本 Qt商业版:提供给商业软件开发.它们提供传统商业软件发行版并且提供在协议有效期内的免费升级和技术支持服务. Qt开源版:仅仅为了开发自由和开放源码软件,提供了和商业版本同样的功能.GNU通用公共许可证下,它是免费的.

5.Qt模块简介

Qt 5 与 Qt 4 最大的一个区别之一是底层架构有了修改.Qt 5 引入了模块化的概念,将众多功能细分到几个模块之中.Qt 4 也有模块的概念,但是是一种很粗的划分,而 Qt 5 则更加细化.本节主要对 Qt 5 的模块进行一个简单的介绍,以便以后大家需要哪些功能的时候知道到哪个模块去寻找. Qt 5 模块分为 Essentials Modules 和 Add-on Modules 两部分.前者是基础模块,在所有平台上都可用:后者是扩展模块,建立在基础模块的基础之上,在能够运行 Qt 的平台

Qt Quick 之 QML 与 C++ 混合编程详解

Qt Quick 技术的引入,使得你能够快速构建 UI ,具有动画.各种绚丽效果的 UI 都不在话下.但它不是万能的,也有很多局限性,原来 Qt 的一些技术,比如低阶的网络编程如 QTcpSocket ,多线程,又如 XML 文档处理类库 QXmlStreamReader / QXmlStreamWriter 等等,在 QML 中要么不可用,要么用起来不方便,所以呢,很多时候我们是会基于这样的原则来混合使用 QML 和 C++: QML 构建界面, C++ 实现非界面的业务逻辑和复杂运算. 请给

Qt on Android: Qt Quick事件处理之鼠标、键盘、定时器

在<Qt on Android: Qt Quick 事件处理之信号与槽>中介绍了 QML 中如何使用内建类型的信号以及如何自定义信号,这次我们来看看如何处理鼠标.键盘.定时器等事件.这些时间在处理时,通常是通过信号来完成的. 广而告之:我正在参加 CSDN 博文大赛,请给我的参赛文章<Qt on Android: Qt Quick 事件处理之信号与槽>投票,谢谢. 鼠标事件处理 桌面开发的话,难免要处理鼠标事件-- 变色矩形示例 看一个简单的处理鼠标事件的例子,先看代码(handl