QDoc Linking Guidelines: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
(Added links to relevant pages of QDoc manual.)
 
(20 intermediate revisions by 7 users not shown)
Line 1: Line 1:
=QDoc Linking Guidelines=
[[Category:Writing Guidelines]]
This page is part of the [[QtWritingGuidelines | Qt Writing Guidelines]]


This page is part of the [[QtWritingGuidelines|Qt Writing Guidelines]]
QDoc allows linking to C++ API, QML API, other QDoc projects, and external sites. The QDoc Manual has a linking guide.


This page contains information about creating links to <span class="caps">API</span> pages and other articles and content.<br />'''Note:''' This applies to '''Qt 5''' QDoc only.
* [https://doc.qt.io/qt-6/qdoc-index.html QDoc Manual]
* [https://doc.qt.io/qt-6/08-qdoc-commands-creatinglinks.html Creating Links]


==Enabling Linking to Content Outside a Module==
== Linking to QDoc projects or Qt modules ==


To link to a section, <span class="caps">API</span>, 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 />
To link to other QDoc projects, set the directory name to the '''depends''' variable of your project's .qdocconf file.
 
For example, to link to Qt Core, Qt QML, Qt GUI, and Qt Linguist pages such as API and examples, set the depends variable with the directory name:
<code>depends += qtcore qtqml qtgui qtlinguist </code>


The depends entry corresponds to the directories found in the '''QT_INSTALL_DOCS''' directory.
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.
For more information about linking to Qt documentation, visit the following pages from the QDoc Manual:
 
==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<br /> to use the '''\l''' command to create a link.
 
==Using the \l Command==
 
In general, to create a link, use the '''\l''' command followed by the link name.<br /> Valid link names include:
 
* Page title
* Class name
* <span class="caps">QML</span> Type name
* Targets created by '''\keyword''' and '''\target'''
* <span class="caps">HTTP</span> <span class="caps">URL</span>s
* Section titles with the '''PageTitle#SectionTitle''' syntax
* <span class="caps">API</span> members such as properties and functions with the '''<span class="caps">APIP</span>age::member''' syntax. For example '''Button::checked'''
 
'''Notes:'''
 
* The parentheses '''()''' after <span class="caps">QML</span> or C++ functions are required, while for <span class="caps">QML</span> properties they are not required.<br /> For example:<br />
* Typing '''\l{Button::}{clicked()}''' is a convenient shortcut for displaying a link to Button::clicked() as ''clicked()''.
 
* The space after the \l is not necessary if it is followed with '''{}''' as it adds unnecessary whitespace. Instead of \l {Page},<br /> type either '''\l{Page}''' or when there is only one word, '''\l Page'''.
 
===Visible Text===
 
Sometimes, to integrate the link name into the sentence or clause, the visible text is necessary.
 
* The '''\l{Signals &amp; Slots#Advanced Signals and Slots Usage}{advanced signals and slots example}''' demonstrates a<br /> 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 <span class="caps">API</span> using<br />'''[]''' after the link command.
 
For example:
 
* '''\l[QML]{EnginioClient}''' – creates a link to the EnginioClient <span class="caps">QML</span> type
* '''\l[CPP]{EnginioClient}''' – creates a link to the EnginioClient C++ class
* '''\l[QtCore]{Qt}''' – creates a link to the Qt namespace
* '''\l[QtQml]{Qt}''' – creates a link to the Qt <span class="caps">QML</span> type
 
Currently only these parameters within '''[]''' are recognized:
 
* '''<span class="caps">QML</span>''' – for <span class="caps">QML</span> types, enumerations, or other definitions in <span class="caps">QML</span> modules (specified with \qmlmodule)
* '''<span class="caps">CPP</span>''' – for C++ <span class="caps">API</span>s
* project or module name
 
'''Note:''' The project name is specifed in the QDoc configuration file (*.qdocconf).
 
==External Pages==
 
To avoid multiple instances of ''hard-coded'' <span class="caps">HTTP</span> <span class="caps">URL</span>s, use the '''\externalpage''' command to associate the <span class="caps">HTTP</span> <span class="caps">URL</span><br /> with a title.<br />'''\l{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 \externalpage 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.
 
==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.
* [https://doc.qt.io/qt-6/22-qdoc-configuration-generalvariables.html#depends depends variable]
* Be mindful about colliding titles by avoiding certain keywords or by creating descriptive page titles.
* [https://doc.qt.io/qt-6/qdoc-guide-conf.html Creating QDoc Configuration Files]
* Linking directly to the <span class="caps">HTML</span> filename should be used as a last resort because the filename can change.
* [https://doc.qt.io/qt-6/25-qdoc-configuration-derivedprojects.html#description Supporting Derived Projects]
* QDoc searches for articles for links first and if there is a page with the same name in another module, use '''[]''' to specify the module name.

Latest revision as of 14:39, 14 October 2024

This page is part of the Qt Writing Guidelines

QDoc allows linking to C++ API, QML API, other QDoc projects, and external sites. The QDoc Manual has a linking guide.

Linking to QDoc projects or Qt modules

To link to other QDoc projects, set the directory name to the depends variable of your project's .qdocconf file.

For example, to link to Qt Core, Qt QML, Qt GUI, and Qt Linguist pages such as API and examples, set the depends variable with the directory name:

depends += qtcore qtqml qtgui qtlinguist

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

For more information about linking to Qt documentation, visit the following pages from the QDoc Manual: