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. Linux监控(OS,MySQL,Tomcat,Apache)

    关于逐步脱离开发岗位的意见,老大已经批准了,接下来我的主要工作就是"运维+数据库管理".感谢杰民兄和小马哥能接受我的骚扰.接下来还会去骚扰他们,同一时候也会去骚扰董大爷,小刚总,心 ...

  2. stl--vector 操作实现

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...

  3. android图像处理系列之四-- 给图片添加边框(上)

    图片处理时,有时需要为图片加一些边框,下面介绍一种为图片添加简单边框的方法. 基本思路是:将边框图片裁剪成八张小图片(图片大小最好一致,不然后面处理会很麻烦),分别对应左上角,左边,左下角,下边,右下 ...

  4. 70.nodejs操作mongodb

    转自:https://www.cnblogs.com/whoamme/p/3467374.html 首先安装nodejs mongodb npm install mongodb var mongodb ...

  5. Fragment-传递参数

    在关Fragment间参数的传递,有两种情况: 第一种情况:同一个container中不同fragment间的参数传递.这种情况一般发生在fragment跳转时,上一个Fragment将参数传递给下一 ...

  6. OA项目笔记

    一.创建项目构架 1.创建一个Maven的web工程 1.1修改编译器版本 <properties> <project.build.sourceEncoding>UTF-8&l ...

  7. Centos安装FastDFS+Nginx(一天时间搞定)

    最近在研究和使用Fastdfs,别人搭的环境,终究是别人的,绝知此事要躬行~躬行啊~      下面的脚本主要参考了官方的INSTALL文件,这个是比较权威的,部分地方和实际情况不一致.比如配置文件的 ...

  8. Java&amp;Xml教程(九)Java中通过XSD校验XML合法性

    Java XML校验API可以通过XSD(XML Schema Definition)校验XML文件内容的合法性. 在以下的案例中使用javax.xml.validation.Validator 类通 ...

  9. Java遍历目录下全部文件并替换指定字符串

    应用场景:比方有一个深层次的文件目录结构,如:javaAPI 每一个文件中面都有同样的内容,而我们要统一改动为其它内容.上千个文件假设一个个改动显得太不明智. import java.io.Buffe ...

  10. Matlab piecelin

    function v = piecelin(x,y,u) %PIECELIN Piecewise linear interpolation. % v = piecelin(x,y,u) finds t ...