Qt模块和工具简介

Qt模块和工具简介

Qt是一个跨平台C++应用程序开发框架。


Qt模块

1、图形用户接

Qt的图形用户接口的基础是QWidget。Qt中所有类型的GUI组件如按钮、标签、工具栏等都派生自QWidget,而QWidget本身则为QObject的子类。Widget负责接收鼠标,键盘和来自窗口系统的其他事件,并描绘了自身显示在屏幕上。每一个GUI组件都是一个widget,widget还可以作为容器,在其内包含其他Widget。

QWidget不是一个抽象类。并且可以被放置在一个已存在的用户接口中;若是Widget没有指定父Widget,当它显示时就是一个独立的视窗、或是一个顶层widget。QWidget显示能力包含了透明化及Double-Buffering。Qt提供一种托管机制,当Widget于创建时指定父对象,就可把自己的生命周期交给上层对象管理,当上层对象被释放时,自己也被释放。确保对象不再使用时都会被删除。

2、信号与槽:

Qt利用信号与槽(signals/slots)机制取代传统的callback来进行对象之间的沟通。当操作事件发生的时候,对象会发提交一个信号(signal);而槽(slot)则是一个函数接受特定信号并且运行槽本身设置的动作。信号与槽之间,则通过QObject的静态方法connect来链接。

信号在任何运行点上皆可发射,甚至可以在槽里再发射另一个信号,信号与槽的链接不限定为一对一的链接,一个信号可以链接到多个槽或多个信号链接到同一个槽,甚至信号也可连接到信号。

以往的callback缺乏类型安全,在调用处理函数时,无法确定是传递正确型态的参数。但信号和其接受的槽之间传递的数据型态必须要相符合,否则编译器会提出警告。信号和槽可接受任何数量、任何型态的参数,所以信号与槽机制是完全类型安全。

信号与槽机制也确保了低耦合性,发送信号的类并不知道是哪个槽会接受,也就是说一个信号可以调用所有可用的槽。此机制会确保当在"连接"信号和槽时,槽会接受信号的参数并且正确运行。

3、布局管理:

布局管理类用于描述一个应用程序的用户界面中的Widget是如何放置。当视窗缩放时,布局管理器会自动调整widget的大小、位置或是字号,确保他们相对的排列和用户界面整体仍然保有可用性。

Qt内置的布局管理类型有:QHBoxLayout、QVBoxLayout、QGridLayout和QFormLayout。这些类继承自QLayout,但QLayout非继承自QWidget而是直接源于QObject。他们负责widget的几何管理。想要创建更复杂的版面配置,可以继承QLayout来自定义版面配置管理员。

  • QHBoxLayout:配置widget成横向一列
  • QVBoxLayout:配置widget成垂直一行
  • QGridLayout:配置widget在平面网格
  • QFormLayout:配置widget用于2栏标签- field


4、Main Window

Qt提供了下列主视窗管理和相关的用户界面组件的类:

  • QMainWindow:提供一个标准的应用程序主视窗。当中可以包括菜单、工具栏、状态栏、停驻组件等组件。
  • QDockWidget:提供了一个可用于创建弹簧工具调色板或辅助窗口的widget。Dock widgets可以移、关闭、浮动为外部视窗。
  • QToolBar:提供了一个通用的工具栏widget,可以放入一些不同的action有关的工具,如按钮、下拉列表、comboboxes和spin boxes。

5、Graphics View

Graphics View提供了用于管理和交互大量定制的2D图形对象的平面以及可视化显示对象的视图widget,并支持缩放和旋转功能。

整个GraphicsView框架提供一个以Item为基础的model-view设计。由3个主要的类组成,分别是QGrphicsItem、QGraphicsScene和QGraphicsView。若干View可以显示一个Scene,Scene中则包含不同几何形状的Item。

该框架包括一个事件传播的架构,让在Scene上的Item有双精度的交互能力。Item可以处理键盘事件,鼠标按下、移动、释放和双击事件,他们也可以跟踪鼠标移动。

Graphics View使用BSP(二进制空间划分)树可非常快速地找到Item,因此即使是包含百万个Item的大型Scene,也能实时图形化显示。

KDE中的Plasma亦是基于Graphics View实现的。

6、无障碍环境:

无障碍环境需要无障碍兼容的应用程序、辅助技术、以及辅助工具之间的合作。应用程序通常不会直接沟通辅助工具,而是通过一个辅助技术,这是一个应用程序和工具之间信息交流的桥梁。用户界面元素相关消息,例如按钮和滚动条,使用辅助技术来显示。Qt支持Windows上的Microsoft Active Accessibility(MSAA)和Mac OS X上Mac OS X Accessibility。

无障碍兼容的应用程序称为AT-Servers,而辅助工具被称为AT-Clients。Qt应用程序通常会是一个AT-Server,但特别的程序也可能如同AT-Client方式工作。

7、国际化:

Qt的字体引擎能够在同一时间正确的显示各种不同的书写系统。并且Qt内部使用Unicode编码来存储文字。

Qt的多国语言支持技术,可以让应用程序中的文字全部使用英文撰写,能够在完全不需修改程序的状况下,改变整个应用程序中的文字为另一个语系的文字,并能够协助处理不同语言的单、复数问题。

独立的翻译文件使得新增支持语言相当容易,同时翻译文件(.ts)为XML格式可以直接编辑或使用Qt Liguist进行翻译,可让无程序开发能力的翻译者亦能独自完成翻译。Qt附带的工具程序就能够自动抽取需要翻译的文字产生翻译文件。

8、多线程:

Qt的线程支持是独立于平台的线程类,采用信号与槽机制,实现类型安全的线程间通讯。这使得它易于开发具可移植性的多线程Qt应用程序。并能充分利用多核架构,获得最佳运行性能,还能根据可用的处理器内核数自动调整使用的线程数。多线程程序设计也是一个执行耗时操作而不会冻结用户界面的有效典范。

 

Qt工具

Qt提供了一些命令行和图形工具,以方便和加速开发的过程。

  • Qt Creator:轻量级的Qt/C++ IDE开发环境。
  • qmake:跨平台构建工具,可简化跨不同平台进行项目开发的构建过程。
  • Qt Designer:界面设计师。可以用拖拽的方式将Widget排放在界面上,支持版面配置,支持信号与槽编辑。
  • Qt Assistant:Qt助手。Qt在线帮助文件查看工具。
  • Qt Liguist:翻译工具。读取翻译文件(如.ts、.po)并为翻译人员提供友好的翻译接口。
  • lupdate:从源代码文件或其他资源文件中提取需要翻译的字符串,并将之存入xml格式的.ts文件中。
  • lrelease:负责将.ts文件转化为程序使用的.qm文件。.qm文件会去掉.ts文件中所有的空白和未翻译的内容,并将存储格式压缩。
  • lconvert:用于翻译文件之间的格式转换。
  • QVFb:虚拟帧缓存设备,模拟framebuffer设备(尺寸、色深),还可以通过skin模拟硬件键盘的布局(包括特殊的按键),可以便捷在桌面系统机器上开发嵌入式程序
  • makeqpf:创建用于嵌入式设备的qpf格式。qpf是一种预先渲染的字体,直接保存成二进制内容,使用的时候可以用存储器映射加载,从加载到绘制的过程不需要计算。
  • uic:User Interface Compiler。从用户界面的文件(.ui)生成C++代码。
  • rcc:Resource Compiler。rcc工具根据.qrc文件的内容将相关的资源在编译过程中嵌入到Qt应用程序。
  • qtconfig:基于X11的Qt的配置工具和在线帮助。
  • qconfig:Qt Embedded(Linux和Windows CE)配置工具。
  • qtdemo:Qt的实例和示范项目的加载器。
  • qt3to4:协助移植Qt 3程序到Qt 4的工具。
  • qdbusxml2cpp:QtDBus XML compiler。将xml格式的D-Bus接口描述转换成为C++源代码
  • D-Bus Viewer:可以查看D-Bus对象和信息的工具。
  • Qt Visual Studio Add-in:Visual Studio集成
  • Qt Eclipse Integration:Eclipse集成

注释:摘抄自维基百科(中文版)

时间: 2024-10-08 01:35:27

Qt模块和工具简介的相关文章

htop,glances和dstat工具简介

htop,glances和dstat工具简介 简介:htop,glances以及dstat是三个性能检测工具 一.htop命令: 语法:htop [options] 如图,我们键入htop后就会出现这个界面 左上部分的1,2,3,4表示我的机器是四核的,显示他们的利用情况.还有内存和交换空间使用情况.中间大部分显示是进程的相关情况.右上部分显示当前的任务数,有多少是在运行,以及负载使用情况. 1.交互式命令(直接在终端输入htop后,进入交互式界面,以下的选项都是指按键操作): (1)u: 过滤

QT元对象系统简介

 QT元对象系统   qt的主要成就之一就是使用了一种机制对C++进行了扩展,并且使用这种机制创建了独立的软件组件,这些组件可以绑定在一起,但任何一个组件对于它所要连接的组件的情况一无所知,这种机制就称为元对象系统,它提供了关键的两个技术,信号和槽,以及内省.     内省功能对于实现信号和槽是必须的,并且容许开发人员在运行时获取有关QObject子类的"元信息",包括一个含有对象的类名以及它所支持的信号和槽的列表,这一机制也支持属性和文本翻译,并且为Qtscript模块奠定了基础,标

(转)Synopsys工具简介

DC Ultra--Design Compiler的最高版本 在Synopsys软件中完整的综合方案的核心是DC UltraTM,对所有设计而言它也是最好级别的综合平台.DC Ultra添加了全面的数据通路和时序优化技术,并通过工业界的反复证明.DC Ultra具有独特的优化技术,能满足今天设计的各种挑战.DC Ultra提供快速的具有先进水平的数据通路优化技术,能建立快速关键路径时序.另外,DC Ultra采用后布局和优化布线技术,易于较快达到时序收敛.DC Ultra已在工业界确立了领先地位

JS内存泄漏 和Chrome 内存分析工具简介(摘)

原文地址:http://web.jobbole.com/88463/ JavaScript 中 4 种常见的内存泄露陷阱 原文:Sebastián Peyrott 译文:伯乐在线专栏作者 - ARIGATO 链接:http://web.jobbole.com/88463/ 点击 → 了解如何加入专栏作者 了解 JavaScript 的内存泄露和解决方式! 在这篇文章中我们将要探索客户端 JavaScript 代码中常见的一些内存泄漏的情况,并且学习如何使用 Chrome 的开发工具来发现他们.读

pt-online-schema-change工具简介

1.工具简介 pt-online-schema-change是percona提供的一个mysql在线修改表结构的工具 2.使用场景 当需要修改线上数据库中某个表的表结构时,发现这个表的数据量比较大,如果使用alter table语句的话可能会阻塞较长的时间,那么可以考虑使用pt-online-schema-change在线修改表结构,而不用担心阻塞应用 3.工作原理 对于要修改表结构的表,pt-online-schema-change首先会创建一个该表的拷贝,这里只拷贝表结构而不涉及到数据,然后

rman备份工具简介

RMAN工具简介: 备份的文件: 数据文件 归档日志 控制文件(当前控制文件) spfile 自动管理备份相关元数据 文件名称 完成备份的scn 以数据块为单位,只备份使用过的数据块(物理层面判断是否使用) 备份时查询块状态,备份瞬间有修改块 等待块使用完成再备份 因此不会出现块分离 对备份出来的文件进行压缩 自身压缩+支持压缩参数 加参数压缩 5:1 自动检测数据块是否损坏 块损坏,不对其备份 支持增量备份 使用rman前提条件: 正确的环境变量 正确的实例名 sys用户操作(推荐) 监听不支

55种开源数据可视化工具简介

55种开源数据可视化工具简介 雪姬 2015-04-21 11:47:56 数据可视化 评论(2)   数据时代数据可视化成为理解和表达数据的有效甚至是唯一的手段. 一共56个,盘点最实用的大数据可视化分析工具 工欲善其事必先利其器,本文对55个流行的数据可视化工具开源协议,主页,文档,案例等资源的进行简单介绍,其中包括著名的D3.js,R,Gephi,Raphaël,Processing.js,Tableau Public,Google Chart Tools,Arbor.js等,资料来源ht

源代码管理工具简介

#一. 源代码管理工具简介* 有必要给大家的介绍一下,如果不说的话,大家都不知道它是干嘛的,首先我们要逐渐的建立器一个感受,对源代码管理工具的一个感觉. * 为什么会出现源代码管理工具? * 首先它得有一定的功能,对不对?任何的发明创造,都是为了解决人类的问题的,对不对?甚至一些语法规则的发明也是为了解决一定的问题的,对不对? * 我随便举个例子啊,举个简单的例子同学们理解一下,比如说像以前我们为了存储一个整形数据,是不是发明了一个叫int 类型的.后来发现不太靠谱,因为他只能存一个整数,所以就

linux下面的性能分析工具简介

iostat 命令详解 iostat用于输出cpu和磁盘I/O相关的统计信息.命令格式: Usage: iostat [ options ] [ <interval> [ <count> ] ] Options are: [ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [ -j { ID | LABEL | PATH | UUID | ... } [ <devi