Qt框架中的主要模块

        接下来我们看看Qt的主要模块,Qt主要分成了三个大的部分:

  1. Qt Essentials(基本模块):该部分定义了Qt在所有平台上的基础组件,基本模块是通用的,对大多数Qt应用程序都很有用。
  2. Qt Add-Ons(附加模块):用于特殊用途的模块被视为附加模块,即使它在所有受支持的平台上都可用。Qt附加模块为特定目的带来了额外的价值。这些模块可能仅在某些开发平台上可用。
  3. Qt Add-Ons in Technical Preview(附加预览模块):仍在开发中,但可作为技术预览版使用的模块。从这一部分中我们看出来Qt未来的技术方向。

        这个图中表示了现在Qt的主要模块,这些模块大部分都是在Qt基本模块中定义的,Qt主要分成了Qt GUI部分和Qt Quick部分:

        Qt GUI部分是现在使用Qt的主流图形接口开发方法,其主要由QApplication、QWindow、Widgets以及各种功能模块组成。

        Qt Quick是在Qt4.7之后追加进来的核心组件,Qt Quick是一组旨在帮助开发者创建在移动电话、媒体播放器、机顶盒和其他便携设备上的应用程序。但是在桌面端依然还是不温不火的状态。其主要原因是,如果我们采用QML进行桌面开发的话,就要接受一种全新的程序设计思想,这个和WPF一直不温不火的原因几乎相同。主要是采用了新的程序设计思想,增加了程序设计的难度,程序员的接受度不高。

        下面这个表格详细的说明它们之间的相同点和不同点:

Quick

Widgets

说明

使用的语言

QML/JS

C++

原生外观

支持其目标平台上的原生外观和感觉。

自定义样式

Qt Widgets提供自定义功能
Qt Quick Controls有多种选择。

流畅的动画 UI

Qt Widgets不能很好地扩展动画。
Qt Quick提供了一种方便自然的方式,以声明的方式实现动画。

触摸屏

Qt Widgets通常需要鼠标光标才能进行良好的交互,
Qt Quick则提供QML类型进行触摸交互。

标准行业小部件

Qt Widgets提供了构建标准工业类型应用程序所需的各种功能,并且这些功能已经发展了二十年。

模型/视图编程

Qt Quick提供了方便的视图,但Qt Widgets提供了更方便和完整的框架。

快速UI开发

Qt Quick是快速UI原型设计和开发的绝佳选择。

硬件加速图形

Qt为Qt Quick接口提供完整的硬件加速,Qt Widgets接口在软件中呈现。

图形效果

Qt Quick模块的图形效果更佳
Qt Widgets接口可用于效果。

富文本处理

Qt Widgets目前为实现文本编辑器提供了最全面的基础。
Qt Quick则需要借助Qt Widgets的功能和C++来实现。

        我们这个教程也还是主要介绍传统的GUI程序设计。其实不管是GUI程序还是Quick程序,我们在设计一个图形接口程序的时候,基本上有下面几部分组成:

  1. 窗口:就是一个桌面程序的主体,我们会在上面增加各种控件来进行显示,控制等交互动作。
  2. 控件:需要在窗口上放置标签、文本框、按钮等各种控件,来进行交互,如果复杂的程序可能还会要求有图表,动画等。
  3. 数据:不论是程序自身产生的数据,还是其他来源的数据,最终我们都需要进行加工整理后,或者表示在对应的控件上,或者进行保存处理。
  4. 操作:就是对控件或者其他来源的动作进行相应的相应。

        Qt在这些方面给我们提供了非常完善的解决方案。

        我们从Qt Framework的体系结构图中可以非常清晰的看出来Qt为GUI程序设计给我们提供的功能,尤其是在GUI部分,从窗口到控件整体功能非常完善。

        如体系结构图所示,Qt的窗口有QMainWindow和QDialog两种,这里需要注意的是,Qt把所有未嵌入到父部件中的Widget都称为窗口,虽然在Qt中QMainWindow和QDialog的各种子类是最常见的窗口类型,同时我们也可以把一个单独的Widget直接显示,这个时候这个部件自己就是一个窗口。这可能是因为在嵌入式开发中要尽可能的节约硬件资源,所有Qt Framework才进行了如此的设计。

        Qt部件中的Graphics View部分,是使用OpenGL开发的,它使用 BSP(二进制空间分区)树来提供非常快速的对大量组件的访问能力,因此,它可以处理拥有大量可视化组件的大型场景,同时它也能够支持缩放和旋转。

        如上图所示,Qt将部件分成四种类型:基本部件(Basic Widget)、高级部件(Advanced Widget)、抽象部件(Abstract Widget)、组织部件(Organizer Widget),除此之外还有Styles、Layouts等辅助用的组件,

        这其中抽象部件是提供了各种方法的基类,我们可以忽略,我们重点关注基本部件、高级部件中常用的部件,同时在学习的过程中也会涉及到组织部件、风格处理、布局等相关的内容。

        下面这个表格中是所有的基本部件:

QCheckBox

带有文本标签的复选框

QComboBox

将按钮与下拉列表组合在一起

QCommandLinkButton

Vista 样式的命令链接按钮

QDateEdit

用于编辑基于QDateTimeEdit 部件的日期的部件

QDateTimeEdit

用于编辑日期和时间的小部件

QDial

四舍五入范围控制(如车速表或电位计)

QDoubleSpinBox

采用双打的旋转框小部件

QFocusFrame

焦点框,可以在部件的正常可绘制区域之外

QFontComboBox

允许用户选择字体系列的组合框

QLCDNumber

显示带有类似 LCD 数字的数字

QLabel

文本或图像显示

QLineEdit

单行文本编辑器

QMenu

用于菜单栏、上下文菜单和其他弹出菜单的菜单部件

QProgressBar

水平或垂直进度条

QPushButton

命令按钮

QRadioButton

带有文本标签的单选按钮

QScrollArea

将视图滚动到另一个部件上

QScrollBar

垂直或水平滚动条

QSizeGrip

调整用于调整顶级窗口大小的句柄

QSlider

垂直或水平滑块

QSpinBox

旋转框部件

QTabBar

选项卡栏,例如用于选项卡式对话框

QTabWidget

选项卡式部件堆栈

QTimeEdit

用于基于 QDateTimeEdit 部件的编辑时间的部件

QToolBox

选项卡式小组件项列

QToolButton

命令或选项的快速访问按钮,通常在 QToolBar 中使用

QWidget

所有用户界面对象的基类

        下面这个表格中是所有的高级部件:

QCalendarWidget

基于每月的日历小部件,允许用户选择日期

QColumnView

列视图的模型/视图实现

QDataWidgetMapper

数据模型的一部分与小组件之间的映射

QListView

模型上的列表或图标视图

QTableView

表视图的默认模型/视图实现

QTreeView

树视图的默认模型/视图实现

QUndoView

显示 QUndoStack 的内容

        经常有一些教程让我们不要过多关注部件,但实际上开始学习一个新的语言或者框架的时候,如果能够在学习的每一步都能够清晰的看到自己的成果,这对我们的学习和坚持是有非常大的帮助的。

        所以我们将从这两部分中选择一些常用的部件开始我们的学习。

        当然如果想要成为一个成熟的Qt GUI程序员,这些部件应该都要熟练掌握,包括这些部件的外观,常用属性,从而开始程序设计的时候更加得心应手,少走弯路。

  • 22
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值