QDoc Linking Guidelines: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 3: Line 3:
This page is part of the [[QtWritingGuidelines | Qt Writing Guidelines]]
This page is part of the [[QtWritingGuidelines | Qt Writing Guidelines]]


This page contains information about creating links to API pages and other articles and content.<br />'''Note:''' This applies to '''Qt 5''' QDoc only.
This page contains information about creating links to API pages and other articles and content.
'''Note:''' This applies to '''Qt 5''' QDoc only.


== Enabling Linking to Content Outside a Module ==
== Enabling Linking to Content Outside a Module ==


To link to a section, API, or page outside of the documentation project (content not included in the .qdocconf file), the module name must be set to the '''depends''' qdocconf variable.<br /><code>depends ''= qtcore qtxmlpatterns qtqml qtgui qtlinguist <code>
To link to a section, API, or page outside of the documentation project (content not included in the .qdocconf file), the module name must be set to the '''depends''' qdocconf variable.
<br />The depends entry corresponds to the directories found in the '''QT_INSTALL_DOCS''' directory.
<code>depends ''= qtcore qtxmlpatterns qtqml qtgui qtlinguist <code>
<br />'''Note''': To link to pages outside of the module, consider using the '''[]''' syntax as explained in the ''Resolving Ambiguous or Colliding Link Names'' section below.
 
<br />h2. Using QDoc's Autolink Feature
The depends entry corresponds to the directories found in the '''QT_INSTALL_DOCS''' directory.
<br />QDoc detects certain keywords such as C''+ class names and attempts to link create links to them. Therefore, there is no need<br />to use the ''' command to create a link.
 
<br />h2. Using the Command
'''Note''': To link to pages outside of the module, consider using the '''[]''' syntax as explained in the ''Resolving Ambiguous or Colliding Link Names'' section below.
<br />In general, to create a link, use the''' command followed by the link name.<br /></code><br />{Link Name}<br /><code><br />Valid link names include:<br />* Page title<br />* Class name<br />* QML Type name<br />* Targets created by ''' and'''<br />* HTTP URLs<br />* Section titles with the '''PageTitle#SectionTitle''' syntax<br />* API members such as properties and functions with the '''APIPage::member''' syntax. For example '''Button::checked'''
 
h2. Using QDoc's Autolink Feature
 
QDoc detects certain keywords such as C''+ class names and attempts to link create links to them. Therefore, there is no need
to use the ''' command to create a link.
 
h2. Using the Command
 
In general, to create a link, use the''' command followed by the link name.
</code>
{Link Name}
<code>
Valid link names include:
* Page title
* Class name
* QML Type name
* Targets created by ''' and'''
* HTTP URLs
* Section titles with the '''PageTitle#SectionTitle''' syntax
* API members such as properties and functions with the '''APIPage::member''' syntax. For example '''Button::checked'''


'''Notes:'''
'''Notes:'''


* The parentheses '''''' after QML or C++ functions are required, while for QML properties they are not required.<br />For example:<br /></code><br />{Button::checked} - creates a link to the Button's checked property<br />{Button::clicked()} - creates a link to the Button's clicked() signal<br /><code>
* The parentheses '''''' after QML or C++ functions are required, while for QML properties they are not required.
For example:
</code>
{Button::checked} - creates a link to the Button's checked property
{Button::clicked()} - creates a link to the Button's clicked() signal
<code>
* Typing '''{Button::}{clicked()}''' is a convenient shortcut for displaying a link to Button::clicked() as ''clicked()''.
* Typing '''{Button::}{clicked()}''' is a convenient shortcut for displaying a link to Button::clicked() as ''clicked()''.


* The space after the is not necessary if it is followed with '''{}''' as it adds unnecessary whitespace. Instead of {Page},<br />type either '''{Page}''' or when there is only one word, '''Page'''.
* The space after the is not necessary if it is followed with '''{}''' as it adds unnecessary whitespace. Instead of {Page},
type either '''{Page}''' or when there is only one word, '''Page'''.


=== Visible Text ===
=== Visible Text ===
Line 26: Line 52:
Sometimes, to integrate the link name into the sentence or clause, the visible text is necessary.
Sometimes, to integrate the link name into the sentence or clause, the visible text is necessary.


* The '''{Signals &amp; Slots#Advanced Signals and Slots Usage}{advanced signals and slots example}''' demonstrates a<br />use for QSignalMapper.
* The '''{Signals &amp; Slots#Advanced Signals and Slots Usage}{advanced signals and slots example}''' demonstrates a
use for QSignalMapper.


== Resolving Ambiguous or Colliding Link Names ==
== Resolving Ambiguous or Colliding Link Names ==


To disambiguate links, QDoc allows the author to specify the QDoc project and the type of API using<br />'''[]''' after the link command.
To disambiguate links, QDoc allows the author to specify the QDoc project and the type of API using
'''[]''' after the link command.


For example:<br />* '''[QML]{EnginioClient}''' - creates a link to the EnginioClient QML type<br />* '''[CPP]{EnginioClient}''' - creates a link to the EnginioClient C++ class<br />* '''[QtCore]{Qt}''' - creates a link to the Qt namespace<br />* '''[QtQml]{Qt}''' - creates a link to the Qt QML type
For example:
* '''[QML]{EnginioClient}''' - creates a link to the EnginioClient QML type
* '''[CPP]{EnginioClient}''' - creates a link to the EnginioClient C++ class
* '''[QtCore]{Qt}''' - creates a link to the Qt namespace
* '''[QtQml]{Qt}''' - creates a link to the Qt QML type


Currently only these parameters within '''[]''' are recognized:<br />* '''QML''' - for QML types, enumerations, or other definitions in QML modules (specified with )<br />* '''CPP''' - for C++ APIs<br />* project or module name
Currently only these parameters within '''[]''' are recognized:
* '''QML''' - for QML types, enumerations, or other definitions in QML modules (specified with )
* '''CPP''' - for C++ APIs
* project or module name


'''Note:''' The project name is specifed in the QDoc configuration file ('''.qdocconf).
'''Note:''' The project name is specifed in the QDoc configuration file ('''.qdocconf).
<br />h2. External Pages
 
<br />To avoid multiple instances of ''hard-coded'' HTTP URLs, use the''' command to associate the HTTP URL<br />with a title.<br /></code><br />http://www.example.com<br />n Example Page<br /><code><br />'''{An Example Page}''' creates link to http://www.example.com. There is a set of external page in ''qtbase/doc/global/externalsites''<br />directory. The command can be declared in the module documentation directory if it is not used anywhere else in Qt to avoid being<br />unnecessarily included in other modules' index files.
h2. External Pages
 
To avoid multiple instances of ''hard-coded'' HTTP URLs, use the''' command to associate the HTTP URL
with a title.
</code>
http://www.example.com
n Example Page
<code>
'''{An Example Page}''' creates link to http://www.example.com. There is a set of external page in ''qtbase/doc/global/externalsites''
directory. The command can be declared in the module documentation directory if it is not used anywhere else in Qt to avoid being
unnecessarily included in other modules' index files.


== Various Guidelines ==
== Various Guidelines ==

Revision as of 11:53, 25 February 2015

h1. QDoc Linking Guidelines

This page is part of the Qt Writing Guidelines

This page contains information about creating links to API pages and other articles and content. Note: This applies to Qt 5 QDoc only.

Enabling Linking to Content Outside a Module

To link to a section, API, or page outside of the documentation project (content not included in the .qdocconf file), the module name must be set to the depends qdocconf variable.

depends ''= qtcore qtxmlpatterns qtqml qtgui qtlinguist <code>

The depends entry corresponds to the directories found in the '''QT_INSTALL_DOCS''' directory.

'''Note''': To link to pages outside of the module, consider using the '''[]''' syntax as explained in the ''Resolving Ambiguous or Colliding Link Names'' section below.

h2. Using QDoc's Autolink Feature

QDoc detects certain keywords such as C''+ class names and attempts to link create links to them. Therefore, there is no need
to use the ''' command to create a link.

h2. Using the Command

In general, to create a link, use the''' command followed by the link name.

{Link Name}

Valid link names include:
* Page title
* Class name
* QML Type name
* Targets created by ''' and'''
* HTTP URLs
* Section titles with the '''PageTitle#SectionTitle''' syntax
* API members such as properties and functions with the '''APIPage::member''' syntax. For example '''Button::checked'''

'''Notes:'''

* The parentheses '''''' after QML or C++ functions are required, while for QML properties they are not required.
For example:

{Button::checked} - creates a link to the Button's checked property {Button::clicked()} - creates a link to the Button's clicked() signal

* Typing '''{Button::}{clicked()}''' is a convenient shortcut for displaying a link to Button::clicked() as ''clicked()''.

* The space after the is not necessary if it is followed with '''{}''' as it adds unnecessary whitespace. Instead of {Page},
type either '''{Page}''' or when there is only one word, '''Page'''.

=== Visible Text ===

Sometimes, to integrate the link name into the sentence or clause, the visible text is necessary.

* The '''{Signals &amp; Slots#Advanced Signals and Slots Usage}{advanced signals and slots example}''' demonstrates a
use for QSignalMapper.

== Resolving Ambiguous or Colliding Link Names ==

To disambiguate links, QDoc allows the author to specify the QDoc project and the type of API using
'''[]''' after the link command.

For example:
* '''[QML]{EnginioClient}''' - creates a link to the EnginioClient QML type
* '''[CPP]{EnginioClient}''' - creates a link to the EnginioClient C++ class
* '''[QtCore]{Qt}''' - creates a link to the Qt namespace
* '''[QtQml]{Qt}''' - creates a link to the Qt QML type

Currently only these parameters within '''[]''' are recognized:
* '''QML''' - for QML types, enumerations, or other definitions in QML modules (specified with )
* '''CPP''' - for C++ APIs
* project or module name

'''Note:''' The project name is specifed in the QDoc configuration file ('''.qdocconf).

h2. External Pages

To avoid multiple instances of ''hard-coded'' HTTP URLs, use the''' command to associate the HTTP URL
with a title.

http://www.example.com n Example Page {An Example Page} creates link to http://www.example.com. There is a set of external page in qtbase/doc/global/externalsites directory. The command can be declared in the module documentation directory if it is not used anywhere else in Qt to avoid being unnecessarily included in other modules' index files.

Various Guidelines

  • It is best if the link title and visible text are in the same line so that they are more readable and easily searched.
  • Be mindful about colliding titles by avoiding certain keywords or by creating descriptive page titles.
  • Linking directly to the HTML filename should be used as a last resort because the filename can change.