Qt初学笔记-1

Qt介绍

1、Qt介绍

Qt5采用了新的模块化库,使得平台移植更简单,Qt5将所有功能模块分成了3个部分:基本模块(Qt Essentials)、扩展模块(Qt Add-Ons)和开发工具(Qt Tools)。

Qt基本模块定义了适应于所有平台的基础功能,所有Qt应用程序都需要使用该模块中提供的功能,基本模块的基础是Qt Core模块,其它所有模块都依赖于该模块。Qt保证,在Qt的整个声明周期内,这部分模块均会保持源代码甚至二进制级别的兼容性。另外,如果某个功能即便是所有平台都能够支持,但是仅仅为了满足某个特定的功能或目的,那么这个功能也不会进入基本模块。

1、1Qt基本模块

Qt的基本模块简介:

  • Qt Core:Qt 5的核心内库,其它各个模块都建立在Core模块上,相对于Qt4,Qt5增加了JSON支持,并且将对XML的支持移入到Core模块,不再是独立的XML功能。
  • Qt GUI:图形用户界面开发的最基础的类库,包括各种交互事件等,同时这个模块还包括了OpenGL的内容。
  • Qt Multimedia:提供对视频、音频、无线电以及摄像头的支持。
  • Qt Mutimedia Widgets:提供基于部件的多媒体功能的支持。
  • Qt Network:提供网络编程库。
  • Qt QML:提供对QML和JavaScript语言的支持。
  • Qt Quik:提供一个用于创建高度动画效果的应用程序的声明式框架,该框架建立在QML和JavaScript的基础之上。
  • Qt Quick Controls:提供一组基于Qt Quick的UI控件,用于创建经典的桌面风格的用户界面。
  • Qt Quik Dialogs:提供一组适用于Qt Quick应用程序的系统对话框。
  • Qt Quick Layouts:提供一组适用于Qt Quick的项目布局 。
  • Qt SQL:提供对关系数据库SQL的支持。
  • Qt Test:提供Qt 应用程序和类库使用的单元测试工具。
  • Qt Widgets:提供C++用户界面部件,是对Qt GUI的扩展。
1、2Qt扩展模块

Qt扩展模块是针对某种特殊目的的额外模块,这些模块在某个或某些特定平台可用,扩展模块不一定在所有平台的发布版本中都有提供。与基本模块不同,扩展模块的版本兼容性是模块自己指定的。

2、图形界面库的架构

Qt 5重构了Qt GUI模块,它不再是一个大而全的图形界面类库,而是为各种图形用户界面组件提供一般的处理,包括窗口系统集成、事件处理、OpenGL和OpenGl ES的集成、2D绘图、-基本图像、字体和文本等。
在这里插入图片描述
在Qt 5支持的平台之上是平台抽象层(它曾经是Qt4的一个开源项目),QPA层上所有深色背景组块都是Qt GUI模块的内容。它们被分为两类,一类是以OpenGL为核心,一类是以辅助访问和输入方式为基础的一般图形显示类。

3、Qt 5架构主要特点

主要特点有:

  • 把全部的Qt接口迁移到Qt平台抽象层上,使Qt能更容易地移植到另外的系统和设备,上。QPA的出现从根本上改变了Qt移植到其它环境的复杂度,由此创造一个更简洁的架构。
  • 重新设计了图形堆栈,与Qt4相比提高了性能。Qt5为Qt Quick引入了全新的图形架构,使用了基于OpenGL的场景图,其最低需求是Open GL(ES)2.0。新版本的Qt GUI包含了一组QOpenGL类,用来替代旧版本的QGL类,还引入了一个比QApplication更轻量级的新类QGuiApplication和一个处理屏幕上顶层窗口的类QWindow,QPainter比以前支持更少的后端,限制使用一个光栅后端(Raster Backend)来绘制屏幕、像素和图像,一个OpenGL后端提供GL接口以及一个提供PDF生成打印的后端。
  • 更加灵活的模块结构,满足桌面和移动的融合,按需添加或删除特定的模块。模块化使Qt开发更容易、更独立地推进不同的部分,这对于Qt 5的稳定以及保持二进制兼容性具有很重要的意义。模块化也简化了第三方模块到Q t集成。

在没有开发工具帮助的情况下,设计一个良好的UI是非常耗时的,Qt Quick相对于原生的C/C++方式来说,已经大大降低了工作复杂度,而Qt 5中全新的Qt Quick Controls和Qt Quick Layouts使得设计用户界面变得更加简单。

3、1Qt5部分新增功能

Qt5中可以使用常用的Sensors和Qt Positioning模块在Qt应用中实现对传感器和定位的支持。

QWebEngine是一个Web内容渲染引擎,它基于Chromium,对标准的Web技术具有广泛的支持。在Qt Quick和传统的Widget编程中都可以使用Qt WebEngine模块,该模块为Qt 5带来最新的HTML5的支持,包含CSS的滤镜、动画、视频和Canvas等。

Qt5将库划分为特定领域的库和模块,这意味着应用程序可以选择自己需要的库进行编译、使用和部署。

Qt可以通过第三方供应商提供的地图数据就可以实现位置和地图信息,Qt Location模块提供了接口和必要的端口,可以从流行的第三方地图解决方案中获取地图数据。

Qt平台抽象层是一个插件架构,它允许Qt动态加载一个窗口系统,并基于现在运行的系统进行集成,这样做有如下优点:集中窗口系统集成代码库到一些类中,这些类多平台共享;简化移植Qt到新平台所需要的工作;在Qt中删除窗口系统依赖,使得多个窗口系统中可以运行同一个Qt二进制文件成为可能。
Qt4已经在C++程序中支持处理多点触控输入,而Qt5将这种支持扩展到了Qt Quick,并且涵盖了触控点的所有信息,包括触控位置、压力和速度等。

Qt5对鼠标事件处理进行了加强,在Qt Quick程序中可以对鼠标事件进行更多的控制。QML文档中的鼠标区域可以传递鼠标滚轮和单击事件,也可以忽略传递的事件。

3、2Qt core的主要更新

主要更新:

  • 作为Qt最基本的信号槽机制,Qt5有了自诞生依赖最大的改变。在Qt5之前的版本中,信号槽利用宏实现,虽然语法简单,但是这种实现的缺点是没有编译期类型检查,只能在运行时发现问题。Qt5巧妙地利用C++的函数指针,为信号槽连接提供了编译期类型检查。不仅如此,Qt5还减少了信号槽的限制,在Qt4中,只有类的非静态成员函数才允许作为槽函数,但在Qt5中,所有函数,包括全局函数、静态函数甚至匿名函数都可以作为槽函数。
  • 包含了一个JSON解析器,随着Web2.0的兴起,JSON正在取代XML成为新一代数据交换格式。Qt5直接内置对JSON的支持。
  • 引入了插件形式和文件内容的Mime类型识别。
  • 引入了一个完整的兼容Perl的正则表达式引擎。
  • 增加了对C++11的支持,同时保证Qt也能在较旧的编译器上运行。在Qt5中,可以直接将信号与一个普通的Lambda表达式连接起来。
3、3网络和联通性

Qt5对IPv6和双模式网络提供了更好的支持。大多数使用主机名和网络层协议的应用现在都可以添加IPv6的支持,这些应用可以选择同时接收IPv4和IPv6连接或者只绑定其中的一个连接类型。

Qt5提供了更好的方式来处理基于TCP套接字的连接和SSL证书:在连接之前绑定一个TCP套接字到一个IP地址上;验证SSL证书链;访问原有系统。
许多涉及处理机密或者重要数据的应用程序往往要考虑到使用严格的客户端身份验证。Qt5支持不透明私钥,允许应用程序从设备(如PKCS#11加密狗)中读取私钥,从而实现严格的客户端身份验证。

Qt5新添了Qt Bluetooth和Qt NFC两个模块,使开发者可以在应用程序中利用这些机制关联和共享信息。

4、Qt5与Qt4的兼容性

Qt 5的发布就是为了让这个C++框架更加高效和易于使用,所有Qt5中使用了很多新的API取代了旧有的。很多内容已在前面介绍过了,这里再次强调

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值