Qt Assistant是Qt自带的一款可定制、可重新发行的帮助文件浏览器。Qt Assistant支持HTML文件,用户可以利用其定制自己的功能强大的帮助文档浏览器。关于Qt Assistant定制的资料主要是Qt Assistant自身所带的英文文档,虽然讲解比较详细,但是对于初学者来说难以快速的入手。因此结合具体实践,对Qt Assistant定制的过程进行整理,希望对他人能有所启发。

       定制过程中用到qhp,qch,qhcp,qhc四种不同格式的文件。对于这四种文件,初学者可能会经常混淆。首先讲解一下这四种文件格式。这四种文件可以分为两组:

(1)qhp与qch。qhp是Qt Help Project的缩写,qch是Qt Compressed Help的缩写。qhp文件负责组织实际用到的帮助文件(通常为HTML文件,即需要在Qt Assistant中浏览的文件),然后通过qhelpgenerator命令生成压缩的qch文件。qch文件是Qt Assistant能够识别的文档最小单元,可以通过Qt Assistant->编辑->首选项->文档标签页->添加/移除操作来注册或者注销一个qch文件。也可以通过命令“assistant -register doc.qch”来注册qch文件。注册后,即可在Assistant界面中浏览帮助文档。

(2)qhcp和qhc。qhcp是Qt Help Collection Project的缩写,其主要作用是将qch二进制文件组织成为一个collection,定制客户化的Assistant;而qhc则是通过qcollectiongenerator命令生成的二进制文件,启动Assistant时需要指定collection参数,即qhc文件。qhc文件中是qch文件的集合,打开Assistant时,通过指定当前collection即可注册多个帮助文档。

从上面文件的解释看,我们需要手动完成两个文件即qhp和qhcp文件,通过这两个文件再生成最终需要的qch和qhc文件。qhp和qhcp文件都是XML文件,语法比较简单,这里不对语法进行详细介绍,具体可查看Qt Assistant帮助文档。下面结合我在项目中对Assistant定制的过程进行总结,并给出了用到的qhp和qhcp文件的内容,这样更有助于从整体上对该过程进行把握。
下面就是制作步骤:
   (1)制作HTML的帮助文件。HTML文件就是把你需要阐述的内容用很多HTML文件表述出来。比如说我的如下图所示:image文件夹用来存放帮助文档需要使用的所有图片,其他html文件就是阐述的内容:

   (2)编写qhp文件。下面是在项目中用到qhp文件,文件比较简单,这里仅用到了基本的功能,具体语法可以查看帮助文档。这里需要注意的是通过标签指定帮助文档目录,这里可以是多级目录,但是Qt中建议不超过四级。指定目录后,需要通过来指定所有用到的HTML文件,包括HTML文件中用到的所有图片。这里如果不指定,生成的qch文件注册到Qt Assistant后将不能找到有效的文件进行显示。我的qph文件如下所示:

点击(此处)折叠或打开

  1. <?xml version="1.0" encoding="GB2312"?>
  2. <QtHelpProject version="1.0">
  3. <namespace>bookmisClient.helpDoc</namespace>
  4. <virtualFolder>doc</virtualFolder>
  5. <filterSection>
  6. <toc>
  7. <section title="首页" ref="./index.html">
  8. <section title="用户登录" ref="./userlogon.html"></section>
  9. <section title="书籍查询" ref="./bookquery.html"></section>
  10. <section title="续借书籍" ref="./Renewal.html"></section>
  11. <section title="系统管理" ref="./systemmanage.html"></section>
  12. <section title="日志管理" ref="./log.html"></section>
  13. <section title="关于" ref="./about.html"></section>
  14. </section>
  15. </toc>
  16. <files>
  17. <file>index.html</file>
  18. <file>userlogon.html</file>
  19. <file>bookquery.html</file>
  20. <file>Renewal.html</file>
  21. <file>systemmanage.html</file>
  22. <file>log.html</file>
  23. <file>about.html</file>
  24. <file>image/*.png</file>
  25. </files>
  26. </filterSection>
  27. </QtHelpProject>

(3)生成qch文件。qhp文件完成后,通过qhelpgenerator命令生成压缩的qch文件。打开cmd,输入" qhelpgenerator   helpDoc.qhp  -o helpDoc.qch "。这里helpDoc.qhp为输入的qhp文件,-o表示输出,输出文件名为helpDoc.qch。如果你的.qch文件在其它文件夹,在输入命令的时候需要加入.qch文件所在目录,同时HTML文件也必须在此目录下:比如所我的:

      (4)编写qhcp文件。qhcp中主要是对用到的qch文件进行组织,项目中用到的一个简单的qhcp文件如下:我的helpDoc.qhcp:

点击(此处)折叠或打开

  1. <?xml version="1.0" encoding="GB2312"?>
  2. <QHelpCollectionProject version="1.0">
  3. <assistant>
  4. <title>图书管理客户端帮助文档</title>
  5. <applicationIcon>image/lib.png</applicationIcon>
  6. <cacheDirectory>cache/helpDoc</cacheDirectory>
  7. <homePage>qthelp://bookmisClient.helpDoc/doc/index.html</homePage>
  8. <startPage>qthelp://bookmisClient.helpDoc/doc/index.html</startPage>
  9. <aboutMenuText>
  10. <text>关于</text>
  11. </aboutMenuText>
  12. <aboutDialog>
  13. <file>./about.txt</file>
  14. <icon>image/lib.png</icon>
  15. </aboutDialog>
  16. <enableDocumentationManager>false</enableDocumentationManager>
  17. <enableAddressBar>false</enableAddressBar>
  18. <enableFilterFunctionality>false</enableFilterFunctionality>
  19. </assistant>
  20. <docFiles>
  21. <generate>
  22. <file>
  23. <input>helpDoc.qhp</input>
  24. <output>helpDoc.qch</output>
  25. </file>
  26. </generate>
  27. <register>
  28. <file>helpDoc.qch</file>
  29. </register>
  30. </docFiles>
  31. </QHelpCollectionProject>
从以上可以看出,在qhcp文件中多了一个标签,并指定了输入qhp文件,和输出qch文件。文件里面可以指定多个qhp和qch,只要注意好文件直接的对应关系就可以了。

(5)生成qhc文件。通过qcollectiongenerator命令生成qhc文件,格式如下:“qcollectiongenerator    helpDoc.qhcp  -o helpDoc.qhc "。这里helpDoc.qhcp文件输入的qhcp文件,-o表示输出,helpDoc.qhc为生成的qhc文件名称。此编译也需要注意目录问题:我编译的截图:

(6)运行Qt Assistant。可以通过命令“assistant -collectionfile helpDoc.qhc”打开assistant,打开后即可浏览到我们自己的帮助文档了。当然如果是在程序中,可以通过QProcess来调用assistant.exe,并给出相应的collectionfile参数即可。命令运行:

帮助文档:

最后在QT Creator里就可以调用此帮助文档,具体实现可参考下面的下载:
http://download.csdn.net/detail/rojian2010/5353368

https://blog.csdn.net/u014213012/article/details/54318137

基于Qt Assistant制作软件帮助文档的更多相关文章

  1. 软件开发过程文档-cgaowei

    鸡肋——食之无味,弃之可惜”,软件开发过程文档遭遇了鸡肋一样的境遇. 目前敏捷软件开发过程非常流行.相对于软件开发过程文档,敏捷软件开发过程更加重视可运行的程序.关于软件开发过程文档,两个极端都是不可 ...

  2. 软件project文档中的数据库模型设计

    背景:软件project文档之<数据库设计说明书>的结构设计部分要明白规划出数据库的概念结构设计.逻辑结构设计.物理结构设计,就是设计数据库的概念模型.逻辑模型.物理模型.那么.何为数据库 ...

  3. Qt 生成word、pdf文档

    需求:将软件处理的结果保存为一个报告文档,文档中包含表格.图片.文字,格式为word的.doc和.pdf.生成word是为了便于用户编辑. 开发环境:qt4.8.4+vs2010 在qt的官网上对于p ...

  4. 基于Picture Library创建的图片文档库中的上传多个文件功能(upload multiple files)报错怎么解决?

    复现过程 首先,我创建了一个基于Picture Library的图片文档库,名字是 Pic Lib 创建完毕后,我点击它的Upload 下拉菜单,点击Upload Picture按钮 在弹出的对话框中 ...

  5. 基于php开发的RESTful ApiDoc文档

    apiDoc基于rest的web API文档生成器,可以根据代码注释生成web api文档,自动生成静态的html网页文档,不仅支持项目版本号,还支持API版本号. 使用apiDoc不需要自己麻烦的调 ...

  6. 如何用OCR图文识别软件在文档里复制内容

    ABBYY FineReader 12是一款OCR图文识别软件,可从文档中复制文本.图片和表格,粘贴到其他应用程序中.无需识别整个文档(关于ABBYY FineReader识别文档的文章,请参考解析A ...

  7. qt 利用 HTML 生成PDF文档,不能显示jpg图片

    利用 QPrinter 和html 生成 pdf文档 其中用html语句有显示图片的语句 但只能显示png格式的图片,不能显示jpg格式图片. 经过排查:语法,文件路径等都正确,最终在stack ov ...

  8. 基于 Python 官方 GitHub 构建 Python 文档

    最近在学 Python,所以总是在看 Python 的官方文档, https://docs.python.org/2/ 因为祖传基因的影响,我总是喜欢把这些文档保存到本地,不过 Python 的文档实 ...

  9. 通过visual studio制作类库的文档

    java的集成开发工具,可以导出jar的文档. visual studio 也可以生成类库的文档,邮件项目属性,生成,输出下,选择XML文档文件.然后生成项目,就会再bin下面生成一个xml文件. 将 ...

随机推荐

  1. CentOS6.4安装Docker

    首先,须要安装EPEL仓库 # wget http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm # rpm -ivh e ...

  2. 前台ajax验证技术采用正则表达式

    var flag1,flag2,flag3,flag4,flag5,flag6=false; function val(obj) { var regBox = { /* regEmail : /^([ ...

  3. Android图像处理之冰冻效果

    原图                                                                          效果图 代码: package com.colo ...

  4. javascript进阶教程第一章案例实战

    javascript进阶教程第一章案例实战 一.学习任务 通过几个案例练习回顾学过的知识 通过练习积累JS的使用技巧 二.实例 练习1:删除确认提示框 实例描述: 防止用户小心单击了“删除”按钮,在用 ...

  5. es7 --- 新特性

    ES7只有2个特性: includes() 指数操作符 不使用ES7 使用indexOf()验证数组中是否存在某个元素,这时需要根据返回值是否为-1来判断: let arr = ['react', ' ...

  6. 怎么成为合格的WEB前端开发工程师

    web前端开发工程师目前来讲是一个热门职位,但是要成为一个合格的web前端开发工程师,需要掌握的知识可不少,零度就简单的为大家讲讲. 大致的来讲,web前端开发工程师需要掌握的知识有:HTML.CSS ...

  7. 讲述ssh服务攻击案例及事件分析

    修改中 本文出自 "李晨光原创技术博客" 博客,谢绝转载!

  8. hbase xshell

    用Xshell登陆linux主机后,在hbase shell下死活不能使用backspace和delete删除误输的指令,只得不停退出,重登,仔细输..又错了,再退出,再登,仔细输...又错了...又 ...

  9. buffer--cache 详解

  10. FreeModbus TCP

    一.Modbus TCP协议格式 Modbus TCP协议数据格式如下图所示: MBAP报文头: Modbus TCP与Modbus RTU相比,没有检验码,也没有所谓的地址码,并且在RTU协议的基础 ...