Qt6.2LTS官方文档综述翻译学习

Qt6.2LTS官方文档综述翻译学习

开发工具

Qt设计用于一次性开发应用程序和用户界面,并将其部署到多个桌面和移动操作系统中。

使用Qt开始应用程序开发的最简单方法是安装Qt.Qt安装包含Qt库,示例,文档和必要的开发工具,例如集成开发环境(IDE)。有关更多信息,请访问该页面。

Qt创建者

为您提供用于在整个应用程序开发生命周期(从创建项目到在目标平台上部署应用程序)中完成任务的工具。Qt Creator通过提供向导来指导您逐步完成项目创建过程,创建必要的文件并根据您所做的选择指定设置,从而自动执行某些任务,例如创建项目。此外,它还通过提供语义突出显示、检查代码语法、代码完成、重构操作和其他有用功能来加快某些任务的速度,例如编写代码。

Qt6.2LTS官方文档综述翻译学习_第1张图片

设计工具

Qt Designer是Qt Creator中的一个工具,用于为Qt Widgets设计和构建图形用户界面(GUI)。您可以在可视化编辑器中撰写和自定义小部件或对话框,并使用不同的样式和分辨率对其进行测试。Qt Designer也可作为独立工具使用。两个版本的Qt Designer仅在某些功能上有所不同,例如资源文件的使用以及如何在设计和编辑模式下切换。有关更多信息,请访问手册。

与设计师合作

Qt允许设计师从成像和设计工具(如Adobe Photoshop,Sketch,Figma,Blender或Maya)导入资源,创建布局和流程,并为开发人员生成代码。是一个工具,提供丰富而流畅的组件、代码编辑器、基于时间轴的动画、视觉效果、布局和原型实时预览。Qt Design Studio为开发人员生成代码,以便在Qt Creator中使用。有关设计器工具的更多信息,请访问手册。

构建工具

Qt Creator为不同的构建系统创建项目模板。您可以为目标平台和构建环境的不同组合创建工具包。Qt Creator支持CMake,qmake,Qbs,Autotools,Nimble,Meson和IncrediBuild项目。

有关项目模板和Qt Creator构建的更多信息,请访问以下页面:

  • Qt Creator: Build Systems
  • Qt Creator: Building for Multiple Platforms

配置和构建Qt

您可以使用CMakeqmake从源代码配置和构建Qt。自定义配置适用于Qt开发人员以及将Qt移植到不同目标。这是一个抽象层,用于促进Qt移植到不同的平台和目标上。

有关构建Qt的更多信息,请访问以下页面:

  • Build with CMake
  • qmake Manual
  • Qt Platform Abstraction
  • Supported Platforms

国际化和帮助工具

您可以将应用程序本地化为不同的语言。Qt中有一个框架,用于处理不同的书写系统,翻译界面,以及以不同的格式显示数字,日期和货币。是开发人员、翻译人员和发布经理在应用程序中实现国际化的工具。不同的角色可以协作在用户界面中生成、存储和部署已翻译的文本。

有关国际化和本地化的更多信息,请访问以下页面:

  • Internationalization with Qt
  • Internationalization and Localization with Qt Quick
  • Qt Linguist
  • Writing Source Code for Translation

您可以使用该框架为复杂的应用程序创建和打包帮助文件。帮助框架涉及基于 XML 的格式和工具,用于创建内容、设置应用程序手册的顺序和过滤器。

  • The Qt Help Framework
  • C++模块

用户界面

Qt框架的主要用户界面技术是Qt QuickQt Widgets。Qt快速界面流畅、动态,最适合触摸界面。Qt小部件用于创建复杂的桌面应用程序。您可以创建具有目标平台原生外观的Qt Quick和Qt Widgets界面。

使用 Qt Quick 构建 UI

Qt Quick用于创建动态和流畅的用户界面。该模块提供 QML 类型,例如按钮、对话框和菜单。您可以使用声明性语言来构建 UI 和 JavaScript 来实现逻辑。

以下列表包含相关概述:

  • Qt Quick Controls
  • - QML简介
  • Visual types in QML
  • Responding to User Input in QML
  • Animations in QML
  • Displaying Text in QML
  • Layouts in QML
  • Style and Theme Support
  • Integrating JavaScript in QML
  • - 3D图形的附加组件
  • - 附加着色器效果

Qt小部件用户界面

是桌面环境中典型的用户界面元素。这些小部件很好地集成到底层平台,在Windows,Linux和macOS上提供本机外观和感觉。这些小部件是成熟的,功能丰富的用户界面元素,适用于大多数传统的用户界面。与 相反,这些小部件用于创建大型桌面应用程序,不太适合创建具有流畅界面的以触摸为中心的应用程序。

以下列表包含Qt小部件的相关概述:

  • Widgets Classes
  • Animation Framework
  • Application Main Window
  • Dialog Windows
  • Drag and Drop
  • Gestures in Widgets and Graphics View
  • Layout Management
  • Window and Dialog Widgets
  • Styles and Style Aware Widgets

用户界面比较

下表比较了Qt Widgets和Qt快速界面。

Qt快速/Qt快速控制 Qt小部件 评论
使用的语言 QML/JS C++
原生外观和感觉 Qt6.2LTS官方文档综述翻译学习_第2张图片 Qt6.2LTS官方文档综述翻译学习_第3张图片 Qt Widgets和Qt快速控制在其目标平台上支持本机外观。
自定义样式 Qt6.2LTS官方文档综述翻译学习_第4张图片 Qt6.2LTS官方文档综述翻译学习_第5张图片 Qt Widgets提供自定义功能,Qt快速控件有一系列选择。
流畅的动画用户界面 Qt6.2LTS官方文档综述翻译学习_第6张图片 Qt小部件不能很好地缩放动画。Qt Quick提供了一种方便自然的方式来以声明性方式实现动画。
触摸屏 Qt6.2LTS官方文档综述翻译学习_第7张图片 Qt Widgets通常需要鼠标光标才能进行良好的交互,而Qt Quick则提供QML类型进行触摸交互。
标准行业小部件 Qt6.2LTS官方文档综述翻译学习_第8张图片 Qt小部件提供了构建标准工业类型应用程序所需的所有花里胡哨的功能,这些花里胡哨的开发时间超过二十年。
模型/视图编程 Qt6.2LTS官方文档综述翻译学习_第9张图片 Qt6.2LTS官方文档综述翻译学习_第10张图片 Qt Quick提供了方便的视图,但Qt Widgets提供了更方便和完整的框架。除了Qt快速视图之外,Qt快速控制还提供.
快速的用户界面开发 Qt6.2LTS官方文档综述翻译学习_第11张图片 Qt6.2LTS官方文档综述翻译学习_第12张图片 Qt Quick是快速UI原型设计和开发的绝佳选择。
硬件加速图形 Qt6.2LTS官方文档综述翻译学习_第13张图片 Qt6.2LTS官方文档综述翻译学习_第14张图片 Qt为Qt Quick接口提供完整的硬件加速,Qt Widgets界面在软件中呈现。概述包含更多信息。
图形效果 Qt6.2LTS官方文档综述翻译学习_第15张图片 几个Qt Quick模块提供图形效果,Qt Widgets界面可用于效果。
富文本处理 Qt6.2LTS官方文档综述翻译学习_第16张图片 Qt6.2LTS官方文档综述翻译学习_第17张图片 Qt Widgets目前为实现文本编辑器提供了最全面的基础。Qt的富文本文档类也可以在Qt Quick和Qt快速控制中使用,但可能需要一些C++实现。

相关主题

以下页面包含有关设计和开发用户界面的详细信息:

  • - 面向设计人员和开发人员的用户界面工具概述
  • - 图形概述
  • Model/View Programming
  • High DPI

核心内部结构

Qt包含一组丰富的基本推动因素,主要来自模块。Qt使用这些使能器来提供更高级别的UI和应用程序开发组件。以下主题解释了最重要的使能因素,并展示了如何使用它们来实现Qt尚未提供的专用功能。

对象、属性和事件

该类构成了Qt对象模型的基础,是许多Qt类的父类。对象模型引入了许多机制,例如元对象系统,它允许对对象中的属性和方法进行运行时自检、操作和调用。它也是Qt事件系统的基础,这是基于对象之间的低级通信方式。Qt的信号和时隙机制提供了另一种高级通信形式。

此外,还提供了具有 () 的简单计时机制。或者,该类为计时器提供高级接口。

  • Object Model
  • The Meta-Object System
  • The Property System
  • The Event System
  • Signals & Slots
    • Differences between String-Based and Functor-Based Connections
  • Timers

容器类

容器是一种数据结构,其实例是其他对象的集合。容器的一些示例包括:动态数组、队列、链表和关联数组。Qt提供了一组通用的、基于模板的容器类,用于在内存中结构化数据。

有关更多详细信息,请参阅完整列表。

国际化

Qt使用Unicode对可显示的文本字符串进行编码。Unicode 支持世界上所有常用的书写系统,是跨平台开发的理想选择。还可以使用Qt强大的国际化系统编写应用程序,以使用一个代码库支持任意数量的不同语言。

  • Unicode in Qt
  • Internationalization with Qt

进程间通信

Qt提供了几个类来支持进程之间的通信。您还可以使用该类启动和管理外部进程。

  • Inter-Process Communication in Qt

线程

Qt提供了以安全且独立于平台的方式管理线程和并行化代码的功能。

  • Threading Basics
  • Thread Support in Qt

平台支持

Qt允许您编写独立于平台的代码,其中相同的代码库可以编译并部署在不同的平台上,而无需进行任何更改。如果您需要使用特定于平台的功能并与系统库集成,Qt还提供解决方案。

Qt使用Qt平台抽象(QPA)与目标平台上的窗口系统集成。QPA是窗口系统的抽象,它使Qt移植到新平台变得简单快捷。一个这样的系统是Wayland协议。Qt可以与Wayland一起使用,作为嵌入式硬件上的轻量级窗口系统,以支持多进程图形用户界面。

Qt平台抽象使用Qt的插件系统。该插件系统提供了在特定领域扩展Qt的API(例如添加对新图像格式,数据库驱动程序等的支持),以及编写自己的可扩展Qt应用程序以支持第三方插件的API。

  • Qt Platform Abstraction
  • How to Create Qt Plugins
  • - 用于处理来自 QtEndian 标头的字节序的函数

数据存储

保存和加载数据

该类是 中所有文件和数据存储设备的基类。用于读取和写入数据的所有类都继承自它。

设备的示例包括 、 、 和 。用于读取和写入文本、二进制文件和资源。该类为 .使开发人员能够建立 TCP 连接并传输数据流。用于启动外部程序,以及读取和写入该进程。

  • (I/O 相关类列表)
  • File and Datastream Functions
  • Serializing Qt Data Types

Qt 中的 SQL 支持

该模块使用驱动程序插件与多个数据库 API 进行通信。Qt有SQLite,MySQL,DB2,Borland InterBase,Oracle,ODBC和PostgreSQL的驱动程序。如果Qt不提供所需的驱动程序,也可以开发自己的驱动程序。

Qt的SQL类可以分为3层:

目的 示例类
驱动程序层SQL API 层用户界面层 数据库和 SQL API 层之间的低级别通信提供对数据库的访问将数据从数据库链接到数据感知小部件 ,,(只读)、(读/写)、 (使用外键支持读/写)

使用除 SQLite 之外的所有 SQL 驱动程序,您可以连接到托管数据库系统的服务器。如果您使用嵌入式MySQL服务器,则不需要MySQL服务器即可使用该数据库系统。

有关如何生成 SQL 数据库驱动程序的说明,请参见。

Qt SQLite插件非常适合本地存储。SQLite 是一个关系数据库管理系统,包含在一个小 (~350 KiB) C 库中。与其他数据库管理系统相比,SQLite 不是从客户端应用程序访问的单独进程,而是其组成部分。SQLite 对单个文件进行操作,打开连接时必须将其设置为数据库名称。如果该文件不存在,SQLite 将尝试创建它。

SQLite对多个用户和多个事务有一些限制。如果正在读取或写入来自不同事务的文件,则应用程序可能会冻结,直到一个事务提交或回滚。

设置驱动程序部分后,可以使用类、、 和 .并提供可与Qt的项目视图一起使用的可编辑模型。对单个表具有读/写访问权限,而对主表(而不是具有外键的表)具有读/写访问权限。

以下页面包含有关将 SQL 合并到应用程序中的信息:

  • SQL Programming
    • Database Classes
    • Executing SQL Statements
    • Using the SQL Model Classes
    • Presenting Data in a Table View
    • Creating Data-Aware Forms

Qt 中的 XML 支持

Qt提供了API来读取和解析XML流,以及写入这些流。以下关键类通过提供必要的基础结构来促进这些操作:

  • 类提供了一个解析器来读取 XML。它是一个格式正确的 XML 1.0 分析器,不包括外部分析的实体。
    • 它理解并解析 XML 命名空间。例如,对于 StartElement,namespaceUri() 返回元素所在的命名空间,name() 返回元素的本地名称。命名空间 Uri() 和 name() 的组合唯一标识元素。
    • 它不是 CPU 密集型的,因为它不会将整个 XML 文档树存储在内存中。它仅在报告时存储当前令牌。
  • 该类为具有简单流式处理 API 的 XML 编写器提供。它是用于编写XML的对应物,并且在使用setDevice()指定的操作上操作。
    • 它是一个简单的 API,为您要编写的每个 XML 令牌或事件提供专用函数。
    • 它负责根据写入元素或属性时指定的命名空间 Uri 为命名空间添加前缀。如果必须使用某些标准化前缀,可以通过使用 writeNamespace() 或 writeDefaultNamespace() 手动声明命名空间来强制编写器使用它们。
    • 它可以通过添加换行符和缩进来自动格式化生成的 XML 数据,使其可读。可以使用自动格式化属性打开此功能。
    • 默认情况下,它以 UTF-8 对 XML 进行编码。可以使用 setCodec() 强制实施不同的编码。

以下主题提供了有关Qt XML支持的更多见解:

  • An Introduction to Namespaces
  • XML Streaming

Qt 中的 JSON

JSON 是一种基于文本的数据交换开放标准,易于读取和解析。它用于表示简单的数据结构和关联数组,称为对象。它与JavaScript有关,但是一种独立于语言的符号形式。

对象可以采用 2 种形式:

  • 名称/值对的集合
  • 值的有序列表
{ “last_name”: “劳特利奇”, “first_name”: “罗纳德”, “birth_date”: 1960 }“颜色”: [“绿色”, “蓝色”, “黄色”]
  • JSON Support in Qt
  • JSON Save Game Example

本地存储

本地存储 API 提供了从 QML 和 JavaScript 访问 SQL 数据库中的本地脱机存储的功能。

这些数据库是特定于用户和特定于 QML 的,但所有 QML 应用程序都可以访问。它们作为 SQLite 数据库存储在 QDeclarativeEngine::offlineStoragePath() 的 Databases 子目录中。

该 API 符合 HTML5 Web 数据库 API 的同步 API,W3C 工作草案,29 年 2009 月 <> 日()。

有关使用本地存储 API 的基本演示,请参阅。

  • Qt Quick Local Storage QML Types

Q设置类

该类提供应用程序设置的持久存储。应用程序通常会记住上一个会话中的设置。

设置在不同平台上的存储方式不同。例如,在Windows上,它们存储在注册表中,而在macOS上,它们存储在XML文件中。

使您能够以可移植的方式保存和还原应用程序设置。构造和销毁对象既轻巧又快速。创建 的对象时,最好不仅指定应用程序的名称,还指定组织的名称。例如:

QSettings settings("MyCompany", "Accountancy");

资源

Qt资源系统是一种独立于平台的机制,用于在应用程序的可执行文件中存储二进制文件。如果您的应用程序经常需要某个文件或一组文件,这将非常方便。它还可以防止丢失该特定文件。

资源数据可以编译到二进制文件中并立即在应用程序代码中访问,也可以动态创建二进制资源并由应用程序注册到资源系统。

默认情况下,可通过与存储在源树中的文件名相同的文件名、前缀或具有 qrc 方案的 URL 从应用程序代码访问资源。:/

  • The Qt Resource System

文件归档

存档文件是文件或目录的集合,这些文件或目录通常被压缩以减少它们在驱动器上消耗的空间。存档文件的示例包括 ZIP、TAR、RAR 和 7z。

Qt支持zlib生成的存档(参见)

网络和连接

Qt提供了用于高级和低级网络通信的类,用于Web集成的类以及用于进程间通信的类。

对于高级网络流量,在所使用的操作上提供一个抽象层,仅显示高级类和函数。Qt网络还可以处理TCP和UDP等较低级别的协议。类喜欢 和 使开发人员能够使用 TCP 或 UDP 协议发送和接收消息。名称解析是通过 完成的。在创建 或 的网络连接之前调用。通过代理过滤和重新分配网络流量可以由 QNetWorkProxy 类处理。

Qt还提供进程间通信(IPC)功能。该类用于启动外部程序。提供对 D-Bus(一种进程间通信和远程过程调用机制)的支持。它主要通过称为总线的中央服务器应用程序进行通信。但是,也可以让应用程序直接相互通信。提供多个线程和进程对共享内存段的访问。但是,单个进程也可以独占锁定该共享内存。

网络通信

Qt支持广泛的网络通信,重点是HTTP,TCP和UDP。

在 HTTP 级别,该模块提供网络访问 API,主要由 、 和 组成。简而言之,类似于 HTTP 请求,它被传递给 以在网络上发送请求;此类返回 ,以便解析 HTTP 回复。网络访问 API 在内部使用下面提到的套接字类(用于 TCP 和 SSL)。

对于套接字级别的通信,应使用 。 这些类通过 waitFor* 方法提供同步 API 以及异步 API;如果可能(即,如果事件循环正在运行),则应始终首选异步 API。Qt还提供启用TCP通信的服务器端部分。请注意,Qt中没有HTTP服务器类。

为了通过SSL进行安全通信,Qt网络除了中央,还提供了广泛的类,例如,和。

Qt还在QML中提供HTTP支持,通过XmlHttpRequest显式使用HTTP,或者在图像源中透明地使用HTTP URL。

相关主题:

  • - 模块文档
    • Network Programming API
    • Network Programming with Qt
    • Qt Network C++ Classes
    • Secure Sockets Layer (SSL) Classes
  • - QML中的网络和URL透明度

进程间通信

Qt提供了几种在Qt应用程序中实现进程间通信(IPC)的方法。

跨平台模块提供的类使网络编程变得可移植且简单。它提供使用特定应用程序级协议进行通信的高级类(例如,)和用于实现协议的较低级类(例如,、、)。

跨平台共享内存类 提供对操作系统共享内存实现的访问。它允许多个线程和进程安全访问共享内存段。此外,还可用于控制对系统共享资源的访问,以及进程之间的通信。

该模块是一个跨平台库,可用于使用 D-Bus 协议实现 IPC。它将Qt的机制扩展到IPC级别,允许一个进程发出的信号连接到另一个进程中的插槽。

跨平台类可用于将外部程序作为子进程启动,并与其通信。它提供了一个 API,用于监视和控制子进程的状态。通过继承自 来访问子进程的输入/输出通道。

该类提供本地套接字。在Windows上,这是一个命名管道,在Unix上,这是一个本地域套接字。该类提供基于本地套接字的服务器。此类使接受传入的本地套接字连接成为可能。

相关主题:

  • - 模块文档
    • Using Qt D-Bus Adaptors
    • Declaring Signals in D-Bus Adaptors
    • Declaring Slots in D-Bus Adaptors
    • The Qt D-Bus Type System
    • Qt D-Bus XML compiler (qdbusxml2cpp)
  • QLocalSocket
  • QSharedMemory

图形

跨平台应用程序可以使用Qt来显示图形元素。Qt抽象了平台的底层图形API,以便开发人员可以专注于应用程序代码。

Qt6.2LTS官方文档综述翻译学习_第18张图片

Qt渲染硬件接口(RHI)将Qt应用程序的3D图形调用转换为目标平台上的可用图形API。

支持的图形 API 包括:

  • OpenGL(版本 3 及更高版本)
  • OpenGL ES(版本 2 及更高版本)
  • Vulkan(1.0 及更高版本)
  • Direct3D 11(11.1 及更高版本)
  • 金属

Qt Quick中的图形

Qt Quick应用程序使用a进行渲染。场景图呈现器可以创建高效的图形调用并提高性能。场景图具有可访问的API,使您可以灵活地创建复杂但快速的图形。

以下列表中的页面包含有关渲染Qt Quick应用程序的更多信息。

  • Qt Quick Scene Graph
  • Scene Graph and Rendering
  • Qt Quick Scene Graph Default Renderer
  • - 如何将应用程序提供的图形命令(OpenGL,Vulkan,Direct3D等)集成到Qt Quick场景图中。

Qt Quick也可以使用.此光栅绘制引擎支持在没有 OpenGL 的平台上渲染 Qt Quick 应用程序。

选择渲染路径

Qt尽可能使用目标平台的图形API,但是,可以使用特定的API设置Qt的渲染路径。在许多情况下,选择特定 API 可以提高性能,并允许开发人员在具有特定图形 API 的平台上进行部署。请访问有关如何在 中设置渲染路径的页面。

3D图形与Qt Quick 3D

是一个附加组件,它提供了一个高级API,用于基于Qt Quick创建3D内容和3D用户界面。它扩展了允许您在3D Qt Quick应用程序上实现2D内容的功能。

Qt6.2LTS官方文档综述翻译学习_第19张图片

着色器效果

它提供了一个工具,用于将顶点和片段着色器转换为Qt Quick接口的包。特别是,QML 类型和子类可以使用 QSB 的输出。有自己的框架,用于将着色器导入 3D 场景。

以下列表包含有关着色器效果的信息。

  • Qt Shader Tools
  • - Qt Quick 3D中的材质和着色器

Qt6.2LTS官方文档综述翻译学习_第20张图片

带有Qt GUI的高级图形

提供高级窗口、绘画和排版系统。提供用于将矢量图形、文本和图像绘制到不同表面或实例(如、、和 )上的 API。对于Qt Widgets用户界面,Qt使用软件渲染器。

以下列表包含有关Qt GUI高级绘图API的信息。

  • Paint System
  • Coordinate System
  • Drawing and Filling

Qt OpenGL Module

该模块适用于需要 OpenGL 访问的应用程序。该模块旨在保持与Qt 5应用程序和Qt GUI的兼容性。对于使用 的用户界面,是可以添加 OpenGL 场景的小部件。

印刷

Qt支持在本地或网络上直接打印到实际打印机,以及生成PDF输出。如何使用Qt进行打印在页面上有详细说明。

图像

Qt支持通过类方便地阅读,编写和操作图像。此外,为了更精细地控制图像的加载或保存方式,可以分别使用 和 类。要在Qt提供的图像格式之外添加对其他图像格式的支持,您可以使用和创建图像格式插件。

有关详细信息,请参阅页面。

移动开发

Qt支持移动应用程序的开发和部署。

以下页面包含有关设置Qt Creator以及如何开始使用移动平台的信息:

  • Android
  • iOS

安卓

Qt 6 中支持 Android 开发。使用Qt Creator,您可以连接到设备,开发,测试和打包Android应用程序。

此Qt版本支持以下配置:

分配 建筑 编译器 笔记
安卓 6.0 或更高版本(API 级别 23 或更高版本) armv7ax86``arm64-v8``x86_64 Clang 11.0.5 (NDK r22b) 由 Google 提供,MinGW 11.2 有关 JDK 版本,请参阅
  • Qt for Android
  • Android Examples

苹果

支持通过 为 Apple iPad 和 iPhone 开发 Qt 应用程序。Qt Creator 是对开发和部署的补充。

目标平台 建筑 构建环境 笔记
iOS 14, iOS 15, iOS 16 armv8 (arm64) Xcode 13 (iOS 15 SDK), Xcode 14 (iOS 16 SDK)
  • Qt for iOS
  • iOS Examples

移动开发工具

是Qt开发的IDE。Qt Creator创建项目文件,测试和调试代码,并连接到移动设备。对于Android,Qt Creator可以对APK文件进行签名和打包,准备发布到Google Play。对于在Apple平台上进行开发是必需的,Qt Creator可以创建项目文件并连接到Apple设备进行测试。

移动设计工具

设计工具通过允许设计人员创建可转换为Qt兼容格式的布局和动画来帮助UI开发。通过设计软件创建的2D和3D资产可以集成到Qt应用程序中。

  • Qt 3D Studio
  • Qt Design Studio

量子学习应用

QML是一种声明性语言,它允许根据用户界面的可视组件以及它们如何相互交互和关联来描述用户界面。它是一种高度可读的语言,旨在使组件能够以动态方式互连,并允许在用户界面中轻松重用和自定义组件。使用该模块,设计人员和开发人员可以轻松地在 QML 中构建流畅的动画用户界面,并可以选择将这些用户界面连接到任何后端C++库。QtQuick

什么是 QML?

QML是一种用户界面规范和编程语言。它允许开发人员和设计人员创建高性能、流畅的动画和视觉上吸引人的应用程序。QML提供了一种高度可读的、声明性的、类似JSON的语法,支持命令式JavaScript表达式和动态属性绑定。

import QtQuick
import QtQuick.Controls

ApplicationWindow {
    width: 400
    height: 400
    visible: true

    Button {
        id: button
        text: "A Special Button"
        background: Rectangle {
            implicitWidth: 100
            implicitHeight: 40
            color: button.down ? "#d6d6d6" : "#f6f6f6"
            border.color: "#26282a"
            border.width: 1
            radius: 4
        }
    }
}

QML 语言和引擎基础结构由该模块提供。有关 QML 语言的详细信息,请参阅模块文档。

以下页面包含有关 QML 的更多信息:

  • - 通过这些示例开始使用 QML
  • Creating Qt Quick Projects in Qt Creator
  • - 参考QML结构和功能
  • QML Coding Conventions
  • Glossary of QML Terms
  • All QML APIs by Module

什么是Qt Quick?

Qt Quick是QML类型和QML功能的标准库。它包括视觉类型,交互类型,动画,模型和视图,粒子效果和着色器效果。QML 应用程序开发人员可以通过单个导入语句访问所有这些功能。

QML 库由模块提供。有关Qt Quick提供的各种QML类型和其他功能的深入信息,请参阅模块文档。Qt Quick除了Qt QML的标准QML类型外,还添加了视觉类型,动画类型和其他QML类型。QtQuick

  • Visual types in QML
  • Responding to User Input in QML
  • Animations in QML
  • Displaying Text in QML
  • Layouts in QML
  • Style and Theme Support
  • Integrating JavaScript in QML

Buttons, Menus, and other Controls

For a set of UI controls, the Qt Quick Controls module implements several controls such as buttons, menus, and views. These controls come with several built-in styles that can be used, and also support the creation of custom styles.

Qt Quick Projects

Qt Creator sets up project environments for the following types of Qt Quick applications:

  • Scroll - scroll-based navigation
  • Stack - stack-based navigation
  • Swipe - page-based application with swipe navigation
  • Python - Qt for Python projects can have QML UIs and have Qt Creator support

For more information about Qt Quick applications, visit the following pages:

  • Creating Qt Quick Projects
  • Design Tools - tools for designing UIs

Code Samples and Demos

To learn more about uses of QML code, there are several code samples which show how QML types are used. In addition, there are several demos which show how QML code is used in applications.

  • Getting Started Programming with Qt Quick - a tutorial showing the creation of a simple QML text editor.
  • Qt Quick Examples and Tutorials

Advanced Application Development Topics

  • Integrating QML and C++
  • Deploying QML Applications
  • Best Practices for QML and Qt Quick
  • Performance Considerations and Suggestions
  • Internationalization and Localization
  • Testing and Debugging
    • Prototyping with the qml runtime tool
    • Debugging QML Applications
    • Qt Quick Test: QML Unit Testing Framework

相关主题

  • All QML Types
  • All QML APIs by Module
  • Obsolete QML Types

平台集成

Qt作为应用程序开发的跨平台工具包的主要优势是消除了为每个目标平台复制应用程序代码的需要。

虽然Qt解决了编写应用程序的许多典型任务,但总有一些Qt无法涵盖的极端情况,或者在特定于平台的API或其他工具包之上构建功能更有意义。

为了支持这些用例,同时仍然允许Qt处理大部分应用程序逻辑,Qt提供了广泛的平台集成API,从简单的类型转换到特定于平台的本机接口。

类型转换

Qt的许多基本数据类型,如、、或,都提供与原生等效类型的转换。

例如,要在 Apple 平台上获取当前用户的用户名,请执行以下操作:

NSProcessInfo *processInfo = NSProcessInfo.processInfo;
QString userName = QString::fromNSString(processInfo.userName)

有关所有类型转换的完整列表,请参阅概述。

窗口嵌入

由底层平台API创建的Windows可以用作Qt窗口的父容器,也可以作为子窗口嵌入到Qt窗口中。

如果应用程序主要使用本机平台 API 编写,但应用程序的某些部分使用 Qt,例如绘制专用 UI,则前者很有用。要将 Qt 嵌入到本机应用程序的窗口层次结构中,请使用 () 获取 Qt 窗口的本机句柄,然后使用本机 API 将窗口重新设置为本机 UI 的父级。

如果本机平台或其他工具包将专用控件公开为本机窗口,则后者很有用。通过使用 () 将本机窗口句柄包装在 中,然后可以将窗口重新设置为Qt窗口层次结构的父级,就像任何其他窗口一样。要将其重新设置为基于 Qt Widget 的 UI,请使用特定于 widgets 的 () 函数。

事件处理

Qt中的大多数事件处理用例都已通过跨平台事件交付,通过()和朋友或通过()充分覆盖。

如果这还不够,Qt提供对原生事件交付的访问。可以使用 () 安装接收所有本机事件的全局事件筛选器,而每个窗口的本机事件可以在 () 中处理。

注意: 干扰本机事件流可能会使Qt处于不一致状态。这些API应该主要用于增强Qt现有的事件处理,例如Qt尚未处理的事件。

本机接口

上述API未涵盖的平台特定功能由Qt中更通用的机制处理。这些接口提供对它们扩展的类的本机或特定于平台的 API 的访问。

这些接口位于命名空间中,涵盖访问底层本机句柄、采用现有本机句柄或提供特定于平台的 API 等用例。

例如,要通过本机接口访问 macOS 上的底层 NSOpenGLContext:

using namespace QNativeInterface;
if (auto *cocoaGLContext = glContext->nativeInterface())
    [cocoaGLContext->nativeContext() makeCurrentContext];

有关所有本机接口的完整列表,请参阅概述。

警告: 原生接口API没有源代码或二进制兼容性保证,这意味着使用这些接口的应用程序只能保证与开发它的Qt版本一起使用。

平台支持

除了应用程序开发人员API,Qt在Qt中提供跨平台构建块的底层实现时,还与平台接口。

示例包括 RHI 中的事件调度程序抽象和呈现硬件抽象。

这里的主要抽象层是 ,或简称 QPA,它处理窗口系统集成和相关用例。

Qt概述

Qt具有各种不同的技术。以下主题是功能的关键领域,可以作为学习如何充分利用Qt的起点。

  • Development Tools

  • User Interfaces

  • Core Internals

  • Data Storage

  • Networking and Connectivity

  • Graphics

  • Mobile Development

  • QML Applications

  • Platform Integration

  • Scripting

  • Internationalization with Qt

  • Testing and Debugging

最佳实践

这些页面提供了有关如何最好地使用Qt技术来创建在可用性和软件设计方面表现出色的应用程序的指导。

Accessibility 如何使残障人士可以访问您的应用程序。
Accessibility for Qt Quick Applications 如何使残障人士可以访问您的应用程序。
Best Practices for QML and Qt Quick 列出使用 QML 和 Qt Quick 的最佳实践
Books about GUI Design 一些关于GUI设计的推荐书籍
Calling Qt Functions From Unix Signal Handlers 你不能。但不要绝望,有办法…
Coordinate System 有关涂装系统使用的坐标系的信息
Creating Custom Qt Types 如何使用Qt创建和注册新类型
Creating Shared Libraries 如何创建共享库。
Creating and Using Components for Qt Designer 如何创建和使用自定义小部件插件
Desktop Integration 与用户的桌面环境集成。
Exception Safety Qt中的异常安全指南。
How to Create Qt Plugins 创建插件以扩展Qt应用程序和功能的指南。
Qt Test Tutorial Qt测试测试的简短介绍
Restoring a Window’s Geometry 如何保存和恢复窗口几何图形。
Rich Text Processing Qt富文本处理、编辑和显示功能概述
Scalability 如何开发在具有不同屏幕配置和 UI 约定的设备上良好缩放的应用程序。
Session Management 如何使用Qt进行会话管理。
Setting the Application Icon 如何设置应用程序的图标。
Standard Accelerator Keys 推荐的加速键。
Timers 如何在应用程序中使用Qt计时器
Using Qt D-Bus Adaptors 如何在Qt中创建和使用DBus适配器

参考

tml) | 如何开发在具有不同屏幕配置和 UI 约定的设备上良好缩放的应用程序。 |
| Session Management | 如何使用Qt进行会话管理。 |
| Setting the Application Icon | 如何设置应用程序的图标。 |
| Standard Accelerator Keys | 推荐的加速键。 |
| Timers | 如何在应用程序中使用Qt计时器 |
| Using Qt D-Bus Adaptors | 如何在Qt中创建和使用DBus适配器 |

参考

另请参阅有关一页上的概述文章、C++模块和 QML 模块的列表。

你可能感兴趣的:(学习,qt)