【轉載】基於Qt Assistant的軟件幫助系統

Qt Assistant是Qt自帶的一款可定製、可重新發行的幫助文件瀏覽器。Qt Assistant支持HTML文件,用戶可以利用其定製自己的功能強大的幫助文檔瀏覽器。關於Qt Assistant定製的資料主要是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參數即可。具體可參考:http://apidocs.meego.com/1.1/core/html/qt4/help-simpletextviewer.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章