Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites 
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

Qt Help Project

A Qt help project collects all data necessary to generate a compressed help file. Along with the actual help data, like the table of contents, index keywords and help documents, it contains some extra information like a namespace to identify the help file. One help project stands for one documentation, e.g. the Qt Assistant manual.

Qt Help Project File Format

The file format is XML-based. For a better understanding of the format we'll discuss the following example:

 <?xml version="1.0" encoding="UTF-8"?>
 <QtHelpProject version="1.0">
     <namespace>mycompany.com.myapplication.1.0</namespace>
     <virtualFolder>doc</virtualFolder>
     <customFilter name="My Application 1.0">
         <filterAttribute>myapp</filterAttribute>
         <filterAttribute>1.0</filterAttribute>
     </customFilter>
     <filterSection>
         <filterAttribute>myapp</filterAttribute>
         <filterAttribute>1.0</filterAttribute>
         <toc>
             <section title="My Application Manual" ref="index.html">
                 <section title="Chapter 1" ref="doc.html#chapter1"/>
                 <section title="Chapter 2" ref="doc.html#chapter2"/>
                 <section title="Chapter 3" ref="doc.html#chapter3"/>
             </section>
         </toc>
         <keywords>
             <keyword name="foo" id="MyApplication::foo" ref="doc.html#foo"/>
             <keyword name="bar" ref="doc.html#bar"/>
             <keyword id="MyApplication::foobar" ref="doc.html#foobar"/>
         </keywords>
         <files>
             <file>classic.css</file>
             <file>*.html</file>
         </files>
     </filterSection>
 </QtHelpProject>

Namespace

To enable the QHelpEngine to retrieve the proper documentation to a given link, every documentation set has to have a unique identifier. A unique identifier makes is also possible for the help collection to keep track of a documentation set without relying on its file name. The Qt help system uses a namespace as identifier which is defined by the mandatory namespace tags. In the example above, the namespace is "mycompany.com.myapplication.1.0".

Virtual Folders

Having a namespace for every documentation naturally means that the documentation sets are quite separated. From the help engines point of view this is beneficial, but from the documentors view it is often desirable to cross reference certain topic from one manual to another without having to specify absolute links. To solve this problem, the help system introduced the concept of virtual folders.

A virtual folder will become the root directory of all files referenced in a compressed help file. When two documentations share the same virtual folder, they can use relative paths when defining hyperlinks pointing to the other documentation. If a file is contained in both documentations or manuals, the one from the current manual has precedence over the other.

 ...
 <virtualFolder>doc</virtualFolder>
 ...

The above example specifies 'doc' as virtual folder. If another manual, e.g. for a small helper tool for 'My Application' specifies the same folder, it is sufficient to write 'doc.html#section1' to reference the first section in the 'My Application' manual.

The virtual folder tag is mandatory and the folder must not contain any '/'.

Custom Filters

Next in the Qt help project file are the optional definitions of custom filters. A custom filter contains a list of filter attributes which will be used later to display only the documentation which has all those attributes assigned to. So, when setting the current filter in the QHelpEngine to "My Application 1.0" only the documentation which has "myapp" and "1.0" set as filter attributes will be shown.

 ...
 <customFilter name="My Application 1.0">
     <filterAttribute>myapp</filterAttribute>
     <filterAttribute>1.0</filterAttribute>
 </customFilter>
 ...

It is possible to define any number of custom filters in a help project file. Important to know is, that the filter attributes have not to be specified in the same project file; they can be defined in any other help file. The definition of a filter attributes takes place by specifying them in a filter section.

Filter Section

A filter section contains the actual documentation. One Qt help project file may contain more than one filter sections. Every filter section consists of four parts, the filter attributes section, the table of contents, the keywords and the files list. In theory all parts are optional but not specifying anything there will result in an empty documentation.

Filter Attributes

Every filter section should have filter attributes assigned to it, to enable documentation filtering. If no filter attribute is defined, the documentation will only be shown if no filtering occurs, meaning the current custom filter in the QHelpEngine does not contain any filter attributes.

 ...
 <filterSection>
     <filterAttribute>myapp</filterAttribute>
     <filterAttribute>1.0</filterAttribute>
 ...

In this case, the filter attributes 'myapp' and '1.0' are assigned to the filter section, i.e. all contents specified in this section will only be shown if the current custom filter has 'myapp' or '1.0' or both as filter attributes.

Table of contents

 ...
 <toc>
     <section title="My Application Manual" ref="index.html">
         <section title="Chapter 1" ref="doc.html#chapter1"/>
         <section title="Chapter 2" ref="doc.html#chapter2"/>
         <section title="Chapter 3" ref="doc.html#chapter3"/>
     </section>
 </toc>
 ...

One section tag represents one item in the table of contents. The sections can be nested to any degree, but from a users perspective it should not be more than four or five levels. A section is defined by its title and reference. The reference, like all file references in a Qt help project, are relative to the help project file itself. Note: The referenced files must be inside the same directory (or within a subdirectory) as the help project file. An absolute file path is not supported either.

Keywords

 ...
 <keywords>
    <keyword name="foo" id="MyApplication::foo" ref="doc.html#foo"/>
    <keyword name="bar" ref="doc.html#bar"/>
    <keyword id="MyApplication::foobar" ref="doc.html#foobar"/>
 </keywords>
 ...

The keyword section lists all keywords of this filter section. A keyword consists basically of a name and a file reference. If the attribute 'name' is used then the keyword specified there will appear in the visible index, i.e. it will be accessible through the QHelpIndexModel. If 'id' is used, the keyword does not appear in the index and is only accessible via the linksForIdentifier() function of the QHelpEngineCore. 'name' and 'id' can be specified at the same time.

Files

 ...
 <files>
     <file>classic.css</file>
     <file>*.html</file>
 </files>
 ...

Finally, the actual documentation files have to be listed. Make sure that all files neccessary to display the help are mentioned, i.e. stylesheets or similar files need to be there as well. The files, like all file references in a Qt help project, are relative to the help project file itself. As the example shows, files (but not directories) can also be specified as patterns using wildcards. All listed files will be compressed and written to the Qt compressed help file. So, in the end, one single Qt help file contains all documentation files along with the contents and indices. Note: The referenced files must be inside the same directory (or within a subdirectory) as the help project file. An absolute file path is not supported either.

Publicité

Best Of

Actualités les plus lues

Semaine
Mois
Année
  1. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 94
  2. Apercevoir la troisième dimension ou l'utilisation multithreadée d'OpenGL dans Qt, un article des Qt Quarterly traduit par Guillaume Belz 0
  3. Les développeurs ignorent-ils trop les failles découvertes dans leur code ? Prenez-vous en compte les remarques des autres ? 17
  4. Pourquoi les programmeurs sont-ils moins payés que les gestionnaires de programmes ? Manquent-ils de pouvoir de négociation ? 42
  5. Quelles nouveautés de C++11 Visual C++ doit-il rapidement intégrer ? Donnez-nous votre avis 10
  6. Adieu qmake, bienvenue qbs : Qt Building Suite, un outil déclaratif et extensible pour la compilation de projets Qt 17
  7. 2017 : un quinquennat pour une nouvelle version du C++ ? Possible, selon Herb Sutter 7
Page suivante

Le blog Digia au hasard

Logo

Créer des applications avec un style Metro avec Qt, exemples en QML et C++, un article de Digia Qt traduit par Thibaut Cuvelier

Le blog Digia est l'endroit privilégié pour la communication sur l'édition commerciale de Qt, où des réponses publiques sont apportées aux questions les plus posées au support. Lire l'article.

Communauté

Ressources

Liens utiles

Contact

  • Vous souhaitez rejoindre la rédaction ou proposer un tutoriel, une traduction, une question... ? Postez dans le forum Contribuez ou contactez-nous par MP ou par email (voir en bas de page).

Qt dans le magazine

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 4.6
Copyright © 2012 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
 
 
 
 
Partenaires

Hébergement Web