为Qt应用程序的用户添加帮助文档

2023-11-09

qt5:简单文本查看器例子

Qt Assistant支持交互式帮助,并使您能够向Qt应用程序的用户显示客户文档。
以下示例说明如何将Qt Assistant用作应用程序的帮助查看器。

使用Qt Assistant作为应用程序的自定义help查看器

如何使用Qt Assistant作为应用程序的自定义help查看器。包括两个步骤:1.创建文档和自定义Qt Assistant;2.在应用程序中添加启动和控制Qt Assistant的功能。

简单文本查看器应用允许用户选择和查看现有的文件。应用提供了它自己自定义的文档,这个文档可以从主窗口的Help按钮获得,也可以通过点击应用中的find file dialog中Help按钮获得。

这个例子由四个类组成:

  • Assitant提供启动Qt Assistant的功能
  • MainWindow是主程序窗口
  • FindFileDialog允许用户使用wildcard matching查找文件
  • TextEdit提供一个富文本浏览器以确保HTML文档中引用的图片显示适当

创建文档和自定义Qt Assistant

如何创建一个真实的HTML网页文档不是本例子讨论的范围。通常,HTML网页可以手写或使用文档工具如qdoc或Doxygen生成help文档。在本例子,我们假设HTML文档已经创建好了。因此,我们只需要告诉Qt Assistant如何结构化和显示help信息。

为Qt Assistant组织文档

纯HTML文件只包含关于某个主题的文本或文档,但他们不包含几个HTML文档如何关联的或应该按照什么顺序阅读的信息。缺少一个索引目录来快速访问某个help内容,查找某个文档时不用浏览大量文档。

为了组织这些文档十七可以被Qt Assistant可用,我们需要创建一个Qt help project file(.qhp)。这个project 文件最先也是最重要的部分是定义namespace。命名空间必须唯一,而且Qt Assistant page URL的第一部分。另外,我们设置一个virtual folder作为文档集的公共文件夹。这就意味着,由两个不同命名空间标识的两个文档集可以交叉引用HTML文件,因为他们的文件在同一个大虚拟文件夹下。然而,在本案例中,我们只有一个文档集可用,因此virtual文件夹名和功能并不重要。

<?xml version="1.0" encoding="UTF-8"?>
<QtHelpProject version="1.0">
  <namespace>org.qt-project.examples.simpletextviewer</namespace>
  <virtualFolder>doc</virtualFolder>

下一个步骤是定义过滤器部分。一个过滤器部分包括目录、索引和所有文档文件的完整列表,可以为其分配任意数量过滤器属性。一个过滤器属性时一个普通字符串,可以自由选择。然后再Qt Assistant,用户可以参考这些属性自定一个过滤器。如果一个过滤器部分的属性匹配文档自定义过滤器属性,Qt Assistant会显示文档,否则隐藏这个文档

因为我们只有一个文档集,我们并不需要Qt Assistant的过滤功能,从而跳过过滤器属性。

现在,我们建立目录。表中的项目由section标记定义,该标记包含项目标题的属性以及到实际页面的链接。section标记可以无限嵌套,但出于实际原因,不建议将其嵌套深度超过三层或四层。对于我们的示例,我们希望使用以下大纲作为目录:
在这里插入图片描述

在help项目文件中,上面的大纲由以下内容表示:

<filterSection>
  <toc>
    <section title="Simple Text Viewer" ref="index.html">
      <section title="Find File" ref="findfile.html">
        <section title="File Dialog" ref="filedialog.html"/>
        <section title="Wildcard Matching" ref="wildcardmatching.html"/>
        <section title="Browse" ref="browse.html"/>
      </section>
      <section title="Open File" ref="openfile.html"/>
    </section>
  </toc>

定义目录后,我们将列出所有索引关键字:

<keywords>
  <keyword name="Display" ref="index.html"/>
  <keyword name="Rich text" ref="index.html"/>
  <keyword name="Plain text" ref="index.html"/>
  <keyword name="Find" ref="findfile.html"/>
  <keyword name="File menu" ref="findfile.html"/>
  <keyword name="File name" ref="filedialog.html"/>
  <keyword name="File dialog" ref="filedialog.html"/>
  <keyword name="File globbing" ref="wildcardmatching.html"/>
  <keyword name="Wildcard matching" ref="wildcardmatching.html"/>
  <keyword name="Wildcard syntax" ref="wildcardmatching.html"/>
  <keyword name="Browse" ref="browse.html"/>
  <keyword name="Directory" ref="browse.html"/>
  <keyword name="Open" ref="openfile.html"/>
  <keyword name="Select" ref="openfile.html"/>
</keywords>

作为最后一步,我们必须列出构成文档的所有文件。这里需要注意的一点是,必须列出所有文件,包括图像文件,甚至样式表(如果使用)。

    <files>
      <file>browse.html</file>
      <file>filedialog.html</file>
      <file>findfile.html</file>
      <file>index.html</file>
      <file>intro.html</file>
      <file>openfile.html</file>
      <file>wildcardmatching.html</file>
      <file>images/browse.png</file>
      <file>images/fadedfilemenu.png</file>
      <file>images/filedialog.png</file>
      <file>images/handbook.png</file>
      <file>images/mainwindow.png</file>
      <file>images/open.png</file>
      <file>images/wildcard.png</file>
    </files>
  </filterSection>
</QtHelpProject>

help project文件现在已完成。如果您想在Qt Assistant中查看生成的文档,则必须生成一个Qt压缩帮助文件,并将其注册到Qt Assistant的默认帮助集合中。

qhelpgenerator simpletextviewer.qhp -o simpletextviewer.qch
assistant -register simpletextviewer.qch

如果现在启动Qt Assistant,您将看到Qt文档旁边的Simple Text Viewer文档。这对于测试来说是可以的,但对于最终版本,我们只希望在Qt Assistant中有Simple Text Viewer文档。

自定义Qt Assistant

Qt助手只显示Simple Text Viewer文档,最简单方法是创建我们自己的帮助集合文件。集合文件以二进制格式存储,类似于压缩的帮助文件,并从help集合项目文件(*.qhcp)生成。在集合文件的帮助下,我们可以自定义外观以及Qt Assistant提供的一些功能。

首先,我们更改窗口标题和图标。显示“简单文本查看器”,而不是显示“Qt助手”,这样用户可以更清楚地知道这个帮助查看器是我们应用程序的帮助查看器。

<?xml version="1.0" encoding="UTF-8"?>
<QHelpCollectionProject version="1.0">
<assistant>
    <title>Simple Text Viewer</title>
    <applicationIcon>images/handbook.png</applicationIcon>
    <cacheDirectory>QtProject/SimpleTextViewer</cacheDirectory>

通过Assistant类控制Qt Assistant

总结

参考文档

Simple Text Viewer Example
生成 qch 帮助文档
qt help collection files
Customizing Qt Assistant

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

为Qt应用程序的用户添加帮助文档 的相关文章

  • 在 4K 屏幕上使用 Matplotlib 和 TKAgg 或 Qt5Agg 后端

    我在 Ubuntu 16 04 上使用 Matplotlib 2 0 和 Python 3 6 来创建数据图 电脑显示器的分辨率为 4k 分辨率为 3840x2160 绘图数字看起来非常小 字体也很小 我已经尝试过TKAgg and Qt5
  • QGraphicsScene没有删除QWidget的功能

    QGraphicsScene 有一个addWidget QWidget 有函数 但是没有对应的removeWidget QWidget 它只有removeItem QGraphicsItem 如何删除 QWidget 这是一个基本示例 看看
  • 如何将 QByteArray 转换为十六进制字符串?

    我有打击QByteArray QByteArray ba ba 0 0x01 ba 1 0x10 ba 2 0x00 ba 3 0x07 我真的不知道如何将此 QByteArray 转换为结果字符串 其中包含 01100007 我将使用 Q
  • 加载 QPixmap 数据的更好方法

    更好的方法来做到这一点 没有QImage QImage image width height QImage Format RGB888 memcpy image bits m frameRGB gt data 0 height width
  • 在 Qt 5 中嵌入 Python

    我想将 Python 解释器嵌入到 Qt 5 应用程序中 我在 Qt 5 中有一个工作应用程序 但是当我把 include
  • 获取 QPushButton 在 2D 数组 QPushButton 上的索引

    我有一个二维数组QPushButton 当用户单击按钮时如何获取按钮的索引 例如当用户单击按钮时a 2 3 它会显示 2 3 该示例如下所示 Qt 4 5 使用对象名称 您可以为按钮指定唯一的对象名称 理想情况下 名称应该是有效的 C 标识
  • 如何为 qmlRegisterSingletonType 实现单例提供程序?

    我想在 QML 中使用 C 类作为 Singleton 实例 并认为我必须使用 qmlRegisterSingletonType 注册它们 此函数需要一个提供已注册 C 类的实例的函数 我在 Windows 上使用最新的 Qt 5 3 1
  • 如何在 Qt Creator 中编辑 QtWebKit 的右键上下文菜单?

    好吧 这是我的困境 我正在使用 Qt Creator 制作一个使用 Webkit 的简单应用程序 我认为 Qt Creator 会有一种简单的方法来使用信号和槽编辑器编辑右键单击上下文菜单 但事实证明这不是真的 我知道 webkit 有与上
  • 用 C++/Qt 编写的程序中的 RTF / doc / docx 文本提取

    我正在写一些程序Qt https en wikipedia org wiki Qt 28software 29 C 我需要从中读取文本微软Word https en wikipedia org wiki Microsoft Word RTF
  • 在没有加载器的情况下实例化内联组件

    有没有办法实例化内联Component 即在同一文件中定义 而不使用Loader 我不太关心使用的性能影响Loader因为我要用很多东西污染我的文件Loader包装纸 我发现从 JavaScript 创建动态 QML 对象 http doc
  • 如何让小部件在上下文菜单出现时接收鼠标释放事件

    在Ubuntu20 04上 当上下文菜单出现时 我无法让小部件接收鼠标释放事件 而Windows可以接收 我的pyqt版本是5 15 2 我考虑过手动发送鼠标释放事件 但我不知道当上下文菜单出现时哪些系统会收到鼠标释放事件 这样做可能会导致
  • QMainWindow 上的 Qt 布局

    我设计了一个QMainWindow with QtCreator s设计师 它由默认的中央小部件 aQWidget 其中包含一个QVBoxLayout以及其中的所有其他小部件 现在我想要的一切就是QVBoxLayout自动占据整个中央小部件
  • 如何声明一个带有成员函数指针的函数

    我有一个类 其中的成员变量指向库对象 class myClassA private libraryClass libraryObject 该库类发出事件 以字符串为特征 并提供一种机制 允许客户端类指定在发出事件时应调用的成员函数 因此在m
  • 如何去除QWizard中的水平线?

    我正在研究一个样式表QWizard我想删除按钮上方的水平线 我尝试递归浏览所有小部件并将其边框设置为无 但似乎没有任何小部件具有此边框 这是我的代码 可以找到完整的可构建示例here https gist github com ardeid
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • Qt中用于线程间通信的类设计

    问题陈述 用相机跟踪物体并相应地移动相机的方位角和仰角 Process 相机获取物体的图像 处理相机的每一帧以查找物体 应该被跟踪 并将每帧中生成的信息传递给机械设备 万向节 以平移和倾斜方式移动摄像机 Design 主 Gui 在一个线程
  • 如何将自定义 Qt 类型与 QML 信号一起使用?

    我在 Qt 5 2 qml 应用程序中创建了一个自定义类型 class Setting public QObject Q OBJECT Q PROPERTY QString key READ key WRITE setKey Q PROPE
  • 如何在Android中使用QML - QWebView

    我想在 Android 中部署一个 YouTube 应用程序 但它只能在我的电脑上运行 在安卓上不起作用 它不加载任何视频 问题仅出在 QWebView 上 我使用了与此类似的代码 http doc qt io archives qt 5
  • PyQt4 信号和槽

    我正在使用 PyQt4 编写我的第一个 Python 应用程序 我有一个 MainWindow 和一个 Dialog 类 它是 MainWindow 类的一部分 self loginDialog LoginDialog 我使用插槽和信号 这
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap

随机推荐

  • Unity3d接入googleplay内购详细说明(二)

    因为本文内容比较多 整理花费时间比较长 故分几篇完成 以下为本文目录结构 方便查阅 Unity3d接入googleplay内购详细说明 一 引言 一 准备条件 二 谷歌开发者后台应用创建说明 Unity3d接入googleplay内购详细说
  • 《Python进阶系列》二:Python中的 for-else 语法

    for else 语法 你是否见过这个语法 for i in xxx pass else pass 是不是一脸懵逼 啊哈哈哈 事实上 在 Python 中 else不仅可以与 if搭配使用 还可以与 for结合 想不到吧 我们先来看一个例子
  • 结合ruoyi-cloud和ruoyi-app实现微信小程序的授权登录

    文章目录 1 前言 1 1 环境准备 1 2 登录流程图 2 小程序代码 2 1 RuoYi App编辑api login js 2 4 新增按钮微信授权登录 2 6 新增wxHandleLogin方法获取code 2 9 创建sendWx
  • 重置计算机的本地策略,Win10怎样重置组策略/安全策略

    很多windows10系统用户都会使用注册表或组策略来深度调试系统 这些系统自带工具虽然能够实现一些表面上没有的功能 但也可能会让我们 翻车 对于注册表来说 修改之前做好备份是硬道理 恢复起来也很方便 但对于组策略和安全策略 要如何才能恢复
  • wxPython 菜单栏 工具栏 状态栏

    coding utf 8 Created on Mon Jun 10 03 56 09 2019 QQ群 476842922 欢迎加群讨论学习 author Administrator coding utf 8 import wx impo
  • RN_iOS项目部署流程实例

    文章目录 1 环境配置 1 1 安装node 1 2 安装Watchman 1 3 安装npm 1 4 安装cocoapods 2 百家云demo下载 3 运行百家云demo 3 1 顺利的话 3 2 踩过的坑 按这个目录流程走 3 2 1
  • 如何使用Flask包构建网页

    最近接到的任务是用Flask构建简单的算法成果展示网页 所以才来研究如何用flask构建网页 因为要求展示 对前端页面的美化不做要求 所以这篇博客的重点在于页面之间的跳转及前后端的数据传输 1 Flask运行HTML代码 默认情况下 Fla
  • C语言例题总结一

    目录 一 两数交换的多种方法 二 比较两数大小的多种方法 三 在重复的数字中找出不同的数字 1 在重复的数字中找出一个不同的数字 2 在重复的数字中找出两个不同的数字 一 两数交换的多种方法 第一种 引入第三方变量 利用了指针将地址传进去
  • solidworks大型装配体慢卡顿怎么办?来看专业的装配设计与仿真工作站是怎么解决的!

    相信很多CAD专业领域的设计工程师都或多或少的遇到慢 卡 顿的情况 按照网上各种设置一通问题依旧 换成昂贵的双路品牌图形工作站依然得不到改善 那么问题到底出在哪儿 下面就依Solidworks为例 从三维设计与仿真的特点来分析软件如何与硬件
  • IEEE Transactions的模板中,出现subfig包和fontenc包冲突的问题,怎么解决?

    IEEE Transactions的模板中 出现subfig包和fontenc包冲突的问题 怎么解决 本文章记录如何在IEEE Transactions的模板中 出现了subfig包和fontenc包冲突的问题 该怎么解决 目录 IEEE
  • 【C#排序算法】(三)希尔排序

    希尔排序 核心 定义增量序列 不断递减增量至1 做插入排序 public void ShellSort int arr 增量h 等于1时最后一次排序 int h arr Length 2 while h gt 1 这里开始是简单插入排序算法
  • C# 整套视觉开发(VisionAndMotionPro)

    实例截图 文件 590m com f 25127180 488329759 5989d1 访问密码 551685 核心代码 VisionAndMotionPro sln vs VisionAndMotionPro v14 v15 Serve
  • 为了对抗内卷,我去阿里“偷了”五套最新Java学习笔记

    最近整理了阿里五套最新的笔记 分别是Java后端30大核心知识点总结 2022最近金三银四面试题总结 阿里巴巴Java开发规范手册 2022版 Spring Cloud Alibaba全解 阿里巴巴机器学习算法集合 今天分享的内容很多 老师
  • 01.03第一篇之数据生成模块

    第3 章数据生成模块 3 1 埋点数据基本格式 公共字段 基本所有安卓手机都包含的字段 业务字段 埋点上报的字段 有具体的业务类型 下面就是一个示例 表示业务字段的上传 下面就是一个示例 表示业务字段的上传 ap xxxxx 项目数据来源
  • Audio Moth代码总结

    1 HFLE的定义 HFLE是指高频时钟分频器 预分频器 High Frequency Low Energy Clock Divider Prescaler 在低功耗模式下 为了节省能量 系统需要使用低频时钟 LFCLK 来驱动一些模块 如
  • linux 线程局部存储,tls_windows

    线程局部存储 线程局部存储 thread local storage TLS 是一个使用很方便的存储线程局部数据的系统 利用TLS机制可以为进程中所有的线程关联若干个数据 各个线程通过由TLS分配的全局索引来访问与自己关联的数据 这样 每个
  • v-model绑定checkbox无法动态更新视图

    在vue2中使用v model绑定checkbox
  • Python爬虫(入门+进阶)学习笔记 1-6 浏览器抓包及headers设置(案例一:爬取知乎)

    爬虫的一般思路 抓取网页 分析请求 解析网页 寻找数据 储存数据 多页处理 本节课主要讲授如何通过谷歌浏览器开发者工具分析真实请求的方法 寻找真实请求的三个步骤 分析 使用谷歌浏览器开发者工具分析网页的请求 测试 测试URL请求中每个参数的
  • echarts实现颜色渐变的环状图(包括自定义各种配置项的属性)

    实现效果 实现代码 option color new echarts graphic LinearGradient 1 1 0 0 offset 0 color F2A635 offset 0 9 color ffffff new echa
  • 为Qt应用程序的用户添加帮助文档

    qt5 简单文本查看器例子 Qt Assistant支持交互式帮助 并使您能够向Qt应用程序的用户显示客户文档 以下示例说明如何将Qt Assistant用作应用程序的帮助查看器 使用Qt Assistant作为应用程序的自定义help查看