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的帮助文件。由于原来的帮助文档是利用Word完成的,因此需要转换。转换的过程十分简单,即便对HTML不了解的用户也可以轻松完成。目前网络上有许多现成的HTML编辑器,利用这些编辑器即可轻松的进行编辑生成相应的html文件。
(2)编写qhp文件。下面是在项目中用到qhp文件,文件比较简单,这里仅用到了基本的功能,具体语法可以查看帮助文档。这里需要注意的是通过<section>标签指定帮助文档目录,这里可以是多级目录,但是Qt中建议不超过四级。指定目录后,需要通过<file>来指定所有用到的HTML文件,包括HTML文件中用到的所有图片。这里如果不指定,生成的qch文件注册到Qt Assistant后将不能找到有效的文件进行显示。
<?xml version="1.0" encoding="UTF-8"?>
<QtHelpProject version="1.0">
<namespace>org.mitk</namespace>
<virtualFolder>doc</virtualFolder>
<filterSection>
<toc>
<section title="fMRIAnalyze Tutorial" ref="tutorial.htm">
</section>
</toc>
<files>
<file>tutorial.htm</file>
<file>Tutorial_files/clip_image002.jpg</file>
.....................................................................
<file>Tutorial_files/clip_image072.jpg</file>
</files>
</filterSection>
</QtHelpProject>
(3)生成qch文件。qhp文件完成后,通过qhelpgenerator命令生成压缩的qch文件。打开cmd,输入" qhelpgenerator doc.qhp -o doc.qch "。这里doc.qhp为输入的qhp文件,-o表示输出,输出文件名为doc.qch。
(4)编写qhcp文件。qhcp中主要是对用到的qch文件进行组织,项目中用到的一个简单的qhcp文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<QHelpCollectionProject version="1.0">
<docFiles>
<register>
<file>doc.qch</file>
<file>其他的qch文件</file>
</register>
</docFiles>
</QHelpCollectionProject>
从文件中可以看出,只需要在register标签中指定相应的qch文件名称即可。当前这里必须确保在qhcp文件目录下存在指定的qch文件。为了避免因为忘记生成qch文件而造成错误,qhcp中支持通过指定qhp文件从一次生成相应的qch和qhc文件。格式如下:
<?xml version="1.0" encoding="utf-8" ?>
<QHelpCollectionProject version="1.0">
<docFiles>
<generate>
<file>
<input>doc.qhp</input>
<output>doc.qch</output>
</file>
</generate>
<register>
<file>doc.qch</file>
</register>
</docFiles>
</QHelpCollectionProject>
从以上可以看出,在qhcp文件中多了一个<generate>标签,并指定了输入qhp文件,和输出qch文件。文件里面可以指定多个qhp和qch,只要注意好文件直接的对应关系就可以了。
(5)生成qhc文件。通过qcollectiongenerator命令生成qhc文件,格式如下:“qcollectiongenerator doc.qhcp -o doc.qhc "。这里doc.qhcp文件输入的qhcp文件,-o表示输出,doc.qhc为生成的qhc文件名称。
在编写qhcp文件时,建议采用(4)中的第二种方式,这样只需要一个命令即可生成qch和qhc文件,也避免了因为遗漏qch文件而造成qhc文件错误。
(6)运行Qt Assistant。可以通过命令“qassistant -collectionfile doc.qhc”打开qassistant,打开后即可浏览到我们自己的帮助文档了。当然如果是在程序中,可以通过QProcess来调用assistant.exe,并给出相应的collectionfile参数即可。
- PC官方版
- 安卓官方手机版
- IOS官方手机版