Qt 帮助框架简介

2023-11-12

概述

Qt帮助系统包括生成和查看Qt帮助文件的工具。此外,它还提供了以编程方式访问帮助内容的类,以便能够将在线帮助集成到Qt应用程序中。

实际的帮助数据,也就是目录、索引关键字或HTML文档,都包含在Qt压缩帮助文件中。所以,一个这样的帮助文件通常代表了一个手册或文档集。由于大多数产品都比较全面,由许多工具组成,所以很少有一本手册就够了。取而代之的是更多的手册,这些手册应该是可以同时访问的。理想情况下,还应该可以将一个手册的某些兴趣点引用到另一个手册中。因此,Qt帮助系统是在帮助集合文件上运行的,其中包括任何数量的压缩帮助文件。

然而,拥有集合文件来合并许多文档集可能会导致一些问题。例如,一个索引关键字可能在不同的文档集中被定义。因此,当只看到索引中的一个关键字并激活它时,你不能确定会显示预期的文档。因此,Qt帮助系统提供了在某些属性后过滤帮助内容的可能性。但是,这要求在生成压缩帮助文件之前,这些属性已经被分配到帮助内容中。

如前所述,Qt压缩帮助文件包含了所有的数据,所以不再需要发布所有的单个HTML文件。取而代之的是,只有压缩帮助文件和可选的集合文件需要发布。收集文件是可选的,因为任何现有的收集文件,例如旧版本的,都可以使用。

因此,一般来说,有四个文件与帮助系统交互,两个用于生成Qt帮助,两个用于分发。

名称 扩展 简要描述
Qt帮助项目(Qt Help Project) .qhp 包含目录、索引和对实际文档文件的引用(*.html)。它还为文档定义了一个独特的命名空间。该文件被传递给帮助生成器,用于创建压缩的帮助文件。
Qt压缩帮助(Qt Compressed Help) .qch 包含帮助项目文件中指定的所有信息以及所有压缩文档文件。
Qt帮助收集项目(Qt Help Collection Project) .qhcp 一个XML文件,它包含了应该包含在帮助集合中的压缩帮助文件的引用。这个文件可以传递给帮助生成器,用于创建帮助集合文件。
Qt帮助集(Qt Help Collection) .qhc QHelpEngine操作的帮助集合文件。它可以包含对任意数量的压缩帮助文件的引用以及附加信息。

生成Qt帮助

为Qt帮助系统建立帮助文件的前提是HTML文档文件已经存在。

HTML文档放置到位后,必须创建扩展名为 .qhp 的Qt帮助项目文件。在此文件中指定所有相关信息之后,需要通过调用以下命令进行编译:

qhelpgenerator doc.qhp -o doc.qch

文件doc.qch包含所有压缩形式的HTML文件以及目录和索引关键字。要测试生成的文件是否正确,请打开Qt Assistant并在“设置>文档”中安装该文件。

对于标准的Qt源码构建,会生成.qhp文件,并放置在与HTML页面相同的目录中。

创建一个Qt帮助集合

第一步是创建一个Qt帮助集合项目文件。由于Qt帮助集主要是存储对压缩帮助文件的引用,因此项目mycollection.qhcp文件看起来非常简单。

<?xml version="1.0" encoding="utf-8" ?>
<QHelpCollectionProject version="1.0">
    <docFiles>
        <register>
            <file>doc.qch</file>
        </register>
    </docFiles>
</QHelpCollectionProject>

用于实际创建收集文件的调用。

qhelpgenerator mycollection.qhcp -o mycollection.qhc

要一次性生成压缩帮助和集合文件,请修改帮助集合项目文件,使其指示帮助生成器先生成压缩帮助。

...
<docFiles>
    <generate>
        <file>
            <input>doc.qhp</input>
            <output>doc.qch</output>
        </file>
    </generate>
    <register>
        <file>doc.qch</file>
    </register>
</docFiles>
...

当然,可以在“ generateregister 部分中指定多个文件,因此可以一次性生成和注册任意数量的压缩帮助文件。

使用Qt Help

可以通过两种方式访问帮助内容:使用Qt Assistant作为文档浏览器,或使用QHelpEngine API将帮助内容嵌入到应用程序中。

通过Qt Assistant

Qt Assistant对一个集合文件进行操作,该文件可以在启动前指定。如果未给定集合文件,则将创建并使用默认的集合文件。在任何一种情况下,都可以注册任何Qt压缩的帮助文件并访问帮助内容。

当使用Qt Assistant作为应用程序的帮助浏览器时,应该可以对其进行自定义以更好地适应应用程序,这样它就不会看起来像一个独立的帮助浏览器。为了实现这一点,可以在Qt帮助集合文件中设置几个附加属性,例如更改Qt Assistant的标题或应用程序图标。

通过QHelpEngine API

除了在外部应用程序(如Qt Assistant)中显示帮助之外,还可以在应用程序中嵌入在线帮助。然后可以通过QHelpEngine类检索内容,并且可以以几乎任何形式显示。在QTextBrowser中显示帮助可能是最常见的方式,但将其嵌入What’s This帮助中也是完全可能的。

从文件引擎检索帮助数据不涉及大量代码。第一步是创建帮助引擎的实例。然后,我们向引擎询问分配给标识符的链接,在本例中为MyDialog::ChangeButton。如果找到了一个链接,意味着该主题至少存在一个帮助文档,我们将通过调用QHelpEngineCore::fileData()来获得实际的帮助内容,并向用户显示该文档。

QHelpEngineCore helpEngine("mycollection.qhc");
...

// 获取标识符的所有文件引用
QList<QHelpLink> links = helpEngine.documentsForIdentifier(QLatin1String("MyDialog::ChangeButton"));

// 如果此关键字有帮助,请获取帮助数据
// 第一个文件引用。
if (links.count()) {
    QByteArray helpData = helpEngine->fileData(links.constBegin()->url);
    // 向用户显示文档
    if (!helpData.isEmpty())
        displayHelp(helpData);
}

有关如何使用API的更多信息,可以参考QtHelpEngine的官方说明。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt 帮助框架简介 的相关文章

  • 必须打开存储才能执行此操作 - System.IO.Packaging.Package

    我正在使用 System IO Packaing Package 类来压缩文件 我的应用程序的多个实例可以同时运行 并读取和保存文件 当处理小文件时 一切似乎都很好 但是当涉及大文件时 如果应用程序的两个实例同时保存 我会收到一个异常 消息
  • C# 中的协变和逆变

    首先我要说的是 我是一名正在学习 C 编程的 Java 开发人员 因此 我会将我所知道的与我正在学习的进行比较 我已经使用 C 泛型几个小时了 我已经能够在 C 中重现我在 Java 中知道的相同内容 除了几个使用协变和逆变的示例 我正在读
  • 通过单个 GPIO 引脚转储闪存

    我正在使用 Infineon 的 XMC4500 Relax Kit 并尝试通过单个 GPIO 引脚提取固件 我非常天真的想法是通过 GPIO 引脚一次转储一位 然后用逻辑分析仪以某种方式 嗅探 数据 伪代码 while word by w
  • 如何使用汇编获取BIOS时间?

    我正在从头开始实现一个小型操作系统 用于教育目的 现在 我想使用汇编来获取 BIOS 时间 我对此进行了很多搜索 但找不到任何代码示例来执行此操作 如果有人可以提供任何参考或代码示例或与此相关的任何内容 我将非常感激 See 时钟中断 1a
  • 如何在 Windows 窗体中运行屏幕保护程序作为其背景?

    如何在 Windows 窗体中运行屏幕保护程序作为其背景 用户还可以在屏幕保护程序运行时与表单控件进行交互 为什么这个 我们有一个案例 需要在用户时运行 Windows Bubbles 屏幕保护程序 可以继续与表单控件交互吗 您可以使用以下
  • C 中的模仿函数重写

    具体来说 函数重写能够调用基本重写方法 这有两部分 一个是预编译的库代码 1 另一个是库的用户代码 2 我在这里实现了一个尽可能最小的经典 Person 和 Employee 示例 非常感谢了解 OOP 概念的铁杆 C 开发人员的回应 我正
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • 数据损坏 C++ 和 Python 之间的管道

    我正在编写一些代码 从 Python 获取二进制数据 将其通过管道传输到 C 对数据进行一些处理 在本例中计算互信息度量 然后将结果通过管道传输回 Python 在测试时 我发现如果我发送的数据是一组尺寸小于 1500 X 1500 的 2
  • 不要声明只读可变引用类型 - 为什么不呢?

    我一直在阅读这个问题 https stackoverflow com questions 2274412 immutable readonly reference types fxcop violation do not declare r
  • C# 中处理 SQL 死锁的模式?

    我正在用 C 编写一个访问 SQL Server 2005 数据库的应用程序 该应用程序是数据库密集型的 即使我尝试优化所有访问 设置适当的索引等 我预计迟早会遇到死锁 我知道为什么会发生数据库死锁 但我怀疑我能否在某个时候发布不发生死锁的
  • 使用 qbs 构建 qt 应用程序

    我想知道在 Linux 上使用 qbs 编译 构建和创建 Android Qt 应用程序的步骤 我拥有所有必要的工具 目前我可以使用 qmake 创建 apk Qbs 目前不支持构建 Qt Android 应用程序 Qbs v1 4 中引入
  • `cosf`、`sinf` 等不在 `std` 中 [重复]

    这个问题在这里已经有答案了 根据这里的讨论 我有报告了一个错误 https bugs launchpad net ubuntu source gcc 8 bug 1831385给 Ubuntu 开发者 编译以下示例 C 程序时 includ
  • 当在 Repository/UnitOrWork 之上使用 Service 类时,我应该在哪里放置逻辑不适合 Repository 的常用数据访问代码?

    In my 先前的问题 https stackoverflow com questions 24906548 using the generic repository unit of work pattern in large projec
  • 无法通过 LINQ to Entities 使用某些功能?

    我正在尝试使用 LINQ 查询在项目上实现搜索功能 由于数据有时包含带有重音符号和其他符号的字符 因此我创建了一种方法来删除这些字符以进行搜索 这是我的代码 var addresses from a in db Addresses join
  • Dynamics Crm:获取状态代码/状态代码映射的元数据

    在 Dynamics CRM 2011 中 在事件实体上 状态原因 选项集 也称为状态代码 与 状态 选项集 也称为状态代码 相关 例如看这个截图 当我使用 API 检索状态原因选项集时 如下所示 RetrieveAttributeRequ
  • 正在获取“未终止 [] 设置”。 C# 中的错误

    我正在 C 中使用以下正则表达式 Regex find new Regex url
  • c# 替代方案中 cfusion_encrypt 中填充的密钥是什么?

    我找到了从这里复制 C 中的 cfusion encrypt 函数的答案 ColdFusion cfusion encrypt 和 cfusion decrypt C 替代方案 https stackoverflow com questio
  • 程序退出后,TcpListener Socket 仍处于活动状态

    当我的程序退出时 我试图停止 TCP 侦听器 我不关心套接字或任何活动客户端套接字上当前活动的任何数据 套接字清理代码本质上是 try myServer Server Shutdown SocketShutdown Both catch E
  • 如何从函数返回矩阵(二维数组)? (C)

    我创建了一个生成宾果板的函数 我想返回宾果板 正如我没想到的那样 它不起作用 这是函数 int generateBoard int board N M i j fillNum Boolean exists True initilize se
  • 如何确定给定方法可以抛出哪些异常?

    我的问题和这个真的一样 找出 C 中方法可能抛出的异常 https stackoverflow com questions 264747 finding out what exceptions a method might throw in

随机推荐

  • 神经网络之VGG

    目录 1 VGG的简单介绍 1 2结构图 3 参考代码 VGGNet 16 架构 完整指南 卡格尔 kaggle com 1 VGG的简单介绍 经典卷积神经网络的基本组成部分是下面的这个序列 带填充以保持分辨率的卷积层 非线性激活函数 如R
  • C# WinForm扩展控件TextBox底部下划线展示

    在winform项目中 新建一个类 TextBoxLine 然后编译项目 打开工具箱就可以看到控件了 代码 using System using System Collections Generic using System Compone
  • Midjourney 动画全参数提示(为 Niji V5 更新)使用 Midjourney 生成动画有两种方式:使用 Niji 模式或使用标准 Midjourney 模型,参数教程(第一节)

    Niji V5 Niji 模式的最新版本 是 Midjourney 的专门针对动画的模型 它建立在与标准 Midjourney 模型完全不同的架构上 更擅长生成具名动画角色 Niji V4 于 2023 年 12 月发布 Niji V5 于
  • gitee将本地项目更新到远程仓库指定的分支上

    1 首先看自己在哪个分支 git branch a 2 然后将代码放到暂存区 git add 3 然后git commit m 提交 到本地库 git commit m 问卷管理 4 然后git pull origin jieer 5 gi
  • shell调试技术

    1 shell调试选项 语法 sh n x v Sctipt sh 参数说明 n 检查shell脚本是否有语法错误 只读取shell脚本 但不执行 x 提供跟踪执行信息 将执行的每一条命令 每一个变量的值和结果一次打印出来 v 一边执行脚本
  • 什么是死区时间

    死区时间是PWM输出时 为了使H桥或半H桥的上下管不会因为开关的关断延迟问题发生同时导通而设置的一个保护时段 通常也指pwm响应时间 由于IGBT 绝缘栅极型功率管 等功率器件都存在一定的结电容 所以会造成器件导通关断的延迟现象 一般在设计
  • 【华为机试真题 Python】@分割可用字符集

    前言 本专栏针对华为OD机试题目进行了详细的分析与解答 并包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun0903
  • 入门嵌入式,开发板应该怎么选?

    作者 学益得智能硬件 入门嵌入式 开发板应该怎么选择 网上推荐的太多 不知道该如何选择 选择开发板 无非考虑三点因素 配套学习资源 源码 视频 书籍 性能 能不能运行学习用到的程序 性价比 价格是不是超出了预算 下面给大家推荐几款主流的能跑
  • C++学习笔记5:继承、多态基础

    组合 继承 继承与组合 构造与析构顺序 派生类重载基类函数的访问 多态性 虚函数 纯虚函数和抽象基类 多重继承 派生类成员的标识与访问 组合 继承与多态性 面向对象涉及的重要目的之一就是代码重用 多态性可以以常规方式书写程序来访问多种现有的
  • ScheduledExecutorService执行定时任务

    java util concurrent Executors可创建一个线程池 它可给定延迟后定期地执行任务 Executors newScheduledThreadPool int corePoolSize ThreadFactory th
  • 对12306新验证码的简单破解

    12306的验证码又换了 变成了类似找你妹的找图游戏了 由于在另一博客发过了 这里贴个地址过来 http www cnblogs com gsls200808 p 4341599 html 后记 在网站更新验证码的第二天 有人在知乎上问了
  • 127.0.0.1可以访问,localhost不能访问的问题

    二者概念 localhost 本地服务器 127 0 0 1 本机地址 本机服务器 二者区别 localhot 是不经网卡传输的 它不受网络防火墙和网卡相关的的限制 127 0 0 1 是通过网卡传输的 它依赖网卡 并受到网络防火墙和网卡相
  • 深度学习常用库汇总简介

    1 FlatBuffer
  • 【C语言】图的邻接表——超详细解析

    图的邻接表 我们重点分析一下无向图 邻接表 我们如何将图中所有顶点和边建立起联系 1 我们发现 V0这个顶点与V1和V3相连 通过右边的邻接表可以看到会出现一个以 V0为头结点的单链表 后面连接的元素就是V1和V3 在顶点数组中的下标 2
  • 【LeetCode】思维向题笔记总结(持续更新)

    不全 记录的都是个人认为比较有意思的题 具体有哪些题可以看看目录 目录 链表相关 双指针 滑动窗口 209 长度最小的子数组 滑动窗口 904 水果成篮 滑动窗口 哈希 模拟相关 59 螺旋矩阵 II 哈希表 哈希表概述 1 两数之和 哈希
  • 全国首款支持多环境开发的 IDE —— CEC-IDE

    有热心开发者在 VS Code 的 GitHub repo 创建了 issue CEC IDE 是一款安全 专业且功能强大的集成开发工具 主页 https www jlht168 com 插件市场 https cecide digitalg
  • 实验九—基本统计分析(二)

    实验9 基本统计分析 二 实验目的 通过综合案例 使学生掌握基本统计分析的各种指标的 掌握统计分析结果的可视化方法 实验内容 1 背景介绍 Consolidated食品公司在新墨西哥州 亚利桑那州和加利福尼亚州经营连锁超市 它举办了一个促销
  • 推荐VSC中一款好用的插件------Code Runner插件

    推荐VSC中一款好用的插件 Code Runner插件 Code Runner插件非常好用 可以运行的语言有 Run C C Java JS PHP Python Perl Ruby Go Lua Groovy PowerShell CMD
  • 软件系统工具-架构师真题(六)

    不属于可修改性考虑的内容 2016 可维护性 可扩展性 结构重构 可变性 答案 D 解析 可修改性指快速较高的性能价格进行系统优化 包括可维护性 可扩展性 结构重组和可移植性四个方面 软件系统工具中 软件评价工具属于 逆向工程工具 开发信息
  • Qt 帮助框架简介

    概述 Qt帮助系统包括生成和查看Qt帮助文件的工具 此外 它还提供了以编程方式访问帮助内容的类 以便能够将在线帮助集成到Qt应用程序中 实际的帮助数据 也就是目录 索引关键字或HTML文档 都包含在Qt压缩帮助文件中 所以 一个这样的帮助文