主题命令

主题命令告诉QDoc正在记录哪个源代码元素。某些主题命令允许您创建与任何底层源代码元素无关的文档页面。

当QDoc处理QDoc注释时,它会尝试通过先查找命名源代码元素的主题命令来将注释连接到源代码中的元素。如果没有主题命令,QDoc会尝试将注释连接到注释后面的源代码元素。如果这两个都不能完成,并且没有主题命令表明注释没有底层源代码元素(例如\page),那么该注释将被丢弃。

正在记录的实体的名称通常是主题命令的唯一参数。使用完整名称。有时参数中可以有一个第二个参数。例如\page

\enum QComboBox::InsertPolicy

\fn命令是一个特殊情况。对于\fn命令,使用函数的签名,包括类限定符。

\fn void QGraphicsWidget::setWindowFlags(Qt::WindowFlags wFlags)

主题命令可以出现在注释的任何地方,但必须单独占用一行。良好的做法是将主题命令放在注释的第一行。如果参数跨越多行,请确保每行(除了最后一行)以反斜杠结束。此外,QDoc会计算括号数量,这意味着如果它遇到 '(',它将认为直到闭括号 ')' 的所有内容都是其参数。

如果重复使用不同的参数重复主题命令,则将为这两个单元显示相同的文档。

/*!
    \fn void PreviewWindow::setWindowFlags()
    \fn void ControllerWindow::setWindowFlags()

    Sets the widgets flags using the QWidget::setWindowFlags()
    function.

    Then runs through the available window flags, creating a text
    that contains the names of the flags that matches the flags
    parameter, displaying the text in the widgets text editor.
*/

PreviewWindow::setWindowFlags()ControllerWindow::setWindowFlags()函数将获得相同的文档。

由主题命令生成的文件的命名规范

对于许多主题命令,例如\page,在处理文档时QDoc将生成一个文件。

在写入磁盘之前,QDoc会规范化每个文件的名称。以下操作执行

  • 替换所有非字母数字字符序列为连字符'-'。
  • 将所有大写字母替换为其小写等效项。
  • 删除所有尾部连字符。

例如,以下命令生成一个名为this-generates-a-file-and-writes-it-to-disk.html的文件。

\page this_generates_a_file_(and_writes_it_to_DISK)-.html

如示例所示,命令中指定的文件名可能与实际写入磁盘的文件名不同。

生成文件的常用前缀和后缀

当QDoc生成文件时,可能会根据将被记录的元素添加前缀、后缀或两者都有。

下表显示了各种元素对应的前缀和后缀。

元素前缀后缀命令
QML模块"-qmlmodule"\qmlmodule
模块"-module"\module
示例项目名称,由项目配置变量提供,后面跟着一个连字符。"-example"\example
QML类型QML的输出前缀,由outputprefixes配置变量提供。

如果包含此类型的模块被QDoc所知,则会添加模块名称作为前缀,后面跟着由outputsuffixes配置变量定义的QML输出后缀和一个连字符。

\qmltype

\class

\class命令用于记录C++ 、C/C++ 结构体联合体。参数是类的完整、限定名称。该命令告诉QDoc,类是公共API的一部分,并允许您输入详细描述。

/*!
    \class QMap::iterator
    \inmodule QtCore

    \brief The QMap::iterator class provides an STL-style
    non-const iterator for QMap and QMultiMap.

    QMap features both \l{STL-style iterators} and
    \l{Java-style iterators}. The STL-style iterators ...
*/

命名的类的HTML文档写入以类名命名的.html文件中,所有字母都小写,并将双冒号限定符替换为'-'。例如,QMap::iterator类的文档写入到qmap-iterator.html

该文件包含\class注释中的类描述,以及QDoc注释为所有类成员生成的文档:类的类型、属性、函数、信号和槽的列表。

\class注释通常包含一个\inmodule命令,以及一个\brief描述。以下是一个非常简单的示例

/*!
    \class PreviewWindow
    \inmodule CustomWidgets
    \brief The PreviewWindow class is a custom widget.
           displaying the names of its currently set
           window flags in a read-only text editor.

    \ingroup miscellaneous

    The PreviewWindow class inherits QWidget. The widget
    displays the names of its window flags set with the \l
    {function} {setWindowFlags()} function. It is also
    provided with a QPushButton that closes the window.

    ...

    \sa QWidget
*/

QDoc如何呈现这个\class取决于您的style.css文件。

\enum

\enum命令用于记录C++枚举类型。参数是枚举类型的全名。

枚举值使用\value命令在\enum注释中进行记录。如果枚举值未使用\value记录,QDoc会发出警告。可以通过使用\omitvalue命令来避免这些警告,告诉QDoc该枚举值不应记录。枚举文档将包含在定义枚举类型的类参考页面、头文件页面或命名空间页面中。例如,考虑Qt命名空间中的枚举类型Corner

enum Corner {
    TopLeftCorner = 0x00000,
    TopRightCorner = 0x00001,
    BottomLeftCorner = 0x00002,
    BottomRightCorner = 0x00003
#if defined(QT3_SUPPORT) && !defined(Q_MOC_RUN)
    ,TopLeft = TopLeftCorner,
    TopRight = TopRightCorner,
    BottomLeft = BottomLeftCorner,
    BottomRight = BottomRightCorner
#endif
};

此枚举可以按这种方式记录

/*!
    \enum Qt::Corner

    This enum type specifies a corner in a rectangle:

    \value TopLeftCorner
           The top-left corner of the rectangle.
    \value TopRightCorner
           The top-right corner of the rectangle.
    \value BottomLeftCorner
           The bottom-left corner of the rectangle.
    \value BottomRightCorner
           The bottom-right corner of the rectangle.

    \omitvalue TopLeft
    \omitvalue TopRight
    \omitvalue BottomLeft
    \omitvalue BottomRight
               Bottom-right (omitted; not documented).
*/

注意包含命名空间限定符。

有关更多信息,请参阅\value\omitvalue

\example

\example命令用于记录示例。参数是示例相对于QDoc配置文件中exampledirs变量列出的路径之一的路径。

文档页面将输出到 modulename-path-to-example.html。除非使用了 \noautolist 命令或者为项目定义了配置变量 url.examples,否则 QDoc 将在页面末尾添加所有示例的源文件和图像文件列表。

例如,如果 exampledirs 包含 $QTDIR/examples/widgets/imageviewer,则

/*!
    \example widgets/imageviewer
    \title ImageViewer Example
    \subtitle

    The example shows how to combine QLabel and QScrollArea
    to display an image.

    ...
*/

另请参阅: \noautolisturl.examples\meta

\externalpage

\externalpage 命令为外部 URL 分配一个标题。

/*!
    \externalpage https://doc.qt.ac.cn/
    \title Qt Documentation Site
*/

这样可以以这种方式在文档中包含指向外部页面的链接

/*!
    At the \l {Qt Documentation Site} you can find the latest
    documentation for Qt, Qt Creator, the Qt SDK and much more.
*/

要在不使用 \externalpage 命令的情况下达到相同的结果,您必须将地址硬编码到您的文档中

/*!
    At the \l {https://doc.qt.ac.cn/}{Qt Documentation Site}
    you can find the latest documentation for Qt, Qt Creator, the Qt SDK
    and much more.
*/

\externalpage 命令使维护文档更加容易。如果地址发生变化,只需更改 \externalpage 命令的参数即可。

\fn (函数)

\fn 命令用于记录一个函数。参数是函数的签名,包括其模板参数(如果有)、返回类型、const-ness 以及带类型的正式参数的列表。如果命名的函数不存在,QDoc 会发出警告。

从 QDoc 版本 6.0 开始,\fn 命令可以用于记录不在头文件中明确声明的类成员,但由编译器隐式生成的成员;默认构造函数和析构函数、拷贝构造函数和移动拷贝构造函数、赋值运算符和移动赋值运算符。

在记录隐藏的友元时,必须在函数名称前加上封装类的名称。例如,对于

class Foo {
   ...
   friend bool operator==(const Foo&, const Foo&) { ... }
   ...
}

命令应该写成 "\fn Foo::operator==(const Foo&, const Foo&)" 而不是作为自由函数 "\fn operator==(const Foo&, const Foo&)"

不这样做将导致 QDoc 抱怨无法解决该函数。

注意: \fn 命令是 QDoc 的默认命令:在没有找到主题命令的 QDoc 注释中,QDoc 尝试将文档与以下代码关联,就像它是函数的文档一样。因此,在函数的 QDoc 注释写在与函数实现在同一 .cpp 文件中的函数实现上方时,通常不需要包含此命令。但必须在记录在 .h 文件中实现的 .cpp 文件中的内联函数时使用此命令。

/*!
    \fn bool QToolBar::isAreaAllowed(Qt::ToolBarArea area) const

    Returns \c true if this toolbar is dockable in the given
    \a area; otherwise returns \c false.
*/

注意:以调试模式运行(传递 -debug 命令行选项或在调用 QDoc 之前设置 QDOC_DEBUG 环境变量)可以帮助调试 QDoc 失败解析的 \fn 命令。在调试模式下,可提供额外的诊断信息。

另请参阅 \overload

\group

\group 命令创建一个单独的页面,列出属于命名组的类、页面或其他实体。参数是组名。

通过使用 \ingroup 命令可以将类包含在组中。概述页面也可以使用相同的命令与组相关联,但必须显式使用 \generatelist 命令请求概述页面的列表(请参见下面的示例)。

\group命令通常后跟一个命令和一个对组的简短介绍。组的HTML页面将被写入一个名为.html的.html文件中。

组中的每个实体都作为超链接列出(使用页面标题或类名),后面跟着实体文档中命令的描述。

/*!
    \group io
    \title Input/Output and Networking
*/

QDoc生成一个组页面io.html

注意,与组相关的概述页面必须专门使用带有参数的命令列出。

/*!
    \group architecture

    \title Architecture

    These documents describe aspects of Qt's architecture
    and design, including overviews of core Qt features and
    technologies.

    \generatelist{related}
*/

另请参阅和\

\headerfile

命令用于文档化在头文件中声明但在命名空间中未声明的全局函数、类型和宏。参数是头文件名。HTML页面将被写入一个由头文件参数构建的.html文件中。

在头文件中被文档化的函数、类型或宏的文档,使用命令包含在头文件页面中使用。

如果参数作为头文件不存在,\headerfile命令仍然会为头文件创建一个文档页面。

/*!
   \headerfile <QtAlgorithms>

   \title Generic Algorithms

   \brief The <QtAlgorithms> header file provides
    generic template-based algorithms.

   Qt provides a number of global template functions in \c
   <QtAlgorithms> that work on containers and perform
   well-know algorithms.
*/

QDoc生成一个头文件页面qtalgorithms.html

另请参阅\

\macro

命令用于文档化一个C++宏。参数是Macro,具有以下三种风格之一:类似于函数的宏,如Q_ASSERT(),声明方式的宏,如Q_PROPERTY,以及没有括号的宏,如Q_OBJECT

注释必须包含一个命令,将宏注释附加到一个类、头文件或命名空间。否则,文档将会丢失。

\module

\module在指定命令的参数创建具有模块所属类列表的页面。包含一个包含于模块中的inmodule命令在类注释中。

\module命令通常后跟一个和<brief>命令。每个类都作为到类参考页面的链接列出,后面跟类<a>brief</a>命令的文本。例如</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \module QtNetwork \title Qt Network Module \brief Contains classes for writing TCP/IP clients and servers. The network module provides classes to make network programming easier and portable. It offers both high-level classes such as QNetworkAccessManager that implements application-level protocols, and lower-level classes such as QTcpSocket, QTcpServer, and QUdpSocket. */</pre></div> <p>可以使用<a href="12-0-qdoc-commands-miscellaneous.html#noautolist-command" translate="no">noautolist</a>命令在这里省略自动生成的类列表。</p> <p>另请参阅<a href="19-qdoc-commands-grouping.html#inmodule-command" translate="no">inmodule</a>。</p> <span id="namespace-command"></span><h2 id="namespace">\namespace<a class="plink" href="#namespace" title="直接链接到此标题"></a></h2> <p><namespace>命令用于文档化称为其参数的C++命名空间的内容。QDoc为命名空间生成的参考页面类似于为C++类生成的参考页面。</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \namespace Qt \brief Contains miscellaneous identifiers used throughout the Qt library. */</pre></div> <p>请注意,在C++中,同一个命名空间可以被多个模块使用,但当一个命名空间中声明了来自不同模块的C++元素时,该命名空间必须在单个模块中仅进行文档说明。例如,上面示例中的命名空间Qt包含来自<a href="qtcore-module.html" translate="no">QtCore</a>和<a href="qtgui-module.html" translate="no">QtGui</a>的类型和函数,但它仅在<a href="qtcore-module.html" translate="no">QtCore</a>中使用\namespace命令进行文档说明。</p> <span id="page-command"></span><h2 id="page">\page<a class="plink" href="#page" title="直接链接到此标题"></a></h2> <p>\page命令用于创建独立的文档页面。</p> <p>\page命令期望一个表示QDoc应存储页面的文件名的单一参数。</p> <p>页眉通过<a href="20-qdoc-commands-namingthings.html#title-command" translate="no">\title</a>命令设置。</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \page aboutqt.html \title About Qt Qt is a C++ toolkit for cross-platform GUI application development. Qt provides single-source portability across Microsoft Windows, macOS, Linux, and all major commercial Unix variants. Qt provides application developers with all the functionality needed to build applications with state-of-the-art graphical user interfaces. Qt is fully object-oriented, easily extensible, and allows true component programming. ... */</pre></div> <p>QDoc在<code translate="no">aboutqt.html</code>中呈现此页面。</p> <span id="property-command"></span><h2 id="property">\property<a class="plink" href="#property" title="直接链接到此标题"></a></h2> <p>\property命令用于记录Qt属性。参数是完整属性名。</p> <p>属性使用<a href="qobject.html#Q_PROPERTY" translate="no">Q_PROPERTY</a>()宏定义。宏将属性名和其设置、重置和获取函数作为参数。</p> <div class="pre"><pre class="cpp plain" translate="no">Q_PROPERTY(QString state READ state WRITE setState)</pre></div> <p>设置、重置和获取函数无需文档说明,仅说明属性即可。QDoc将生成出现在属性文档中的访问函数列表,这些函数将位于定义属性的类的文档中。</p> <p>\property命令注释通常包含一个<a href="11-qdoc-commands-specialcontent.html#brief-command" translate="no">\brief</a>命令。对于属性,<a href="11-qdoc-commands-specialcontent.html#brief-command" translate="no">\brief</a>命令的参数是包含在属性单行描述中的一句话片段。该命令遵循描述的相同规则,如同<a href="13-qdoc-commands-topics.html#variable-command" translate="no">\variable</a>命令。</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \property QPushButton::flat \brief Whether the border is disabled. This property's default is false. */</pre></div> <span id="qmlattachedproperty-command"></span><h2 id="qmlattachedproperty">\qmlattachedproperty<a class="plink" href="#qmlattachedproperty" title="直接链接到此标题"></a></h2> <p>\qmlattachedproperty命令用于记录将附加到某些QML类型的QML属性。参见<a href="qtqml-syntax-objectattributes.html#attached-properties-and-attached-signal-handlers" translate="no">附加属性</a>。参数是行余下部分。它必须以属性类型开头,接着是声明属性类型的QML类型名,接着是<code translate="no">::</code>限定符,最后是属性名。</p> <p>例如,要为<code translate="no">ListView</code>类型记录一个名为<code translate="no">isCurrentItem</code>的布尔附加属性</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \qmlattachedproperty bool ListView::isCurrentItem This attached property is \c true if this delegate is the current item; otherwise false. It is attached to each instance of the delegate. This property may be used to adjust the appearance of the current item, for example: \snippet doc/src/snippets/declarative/listview/listview.qml isCurrentItem */</pre></div> <p>QDoc将此附加属性包含在<a href="qml-qtquick-listview.html" translate="no">ListView</a>类型的QML参考页中。</p> <div class="admonition note"> <p><b>注意:</b>像<a href="13-qdoc-commands-topics.html#qmlproperty-command" translate="no">\qmlproperty</a>一样,\qmlattachedproperty也接受其参数的部分为其QML模块标识符。</p> </div> <span id="qmlattachedsignal-command"></span><h2 id="qmlattachedsignal">\qmlattachedsignal<a class="plink" href="#qmlattachedsignal" title="直接链接到此标题"></a></h2> <p>\qmlattachedsignal命令用于记录可附加的<a href="qtqml-syntax-signals.html" translate="no">信号</a>。\qmlattachedsignal命令就像<a href="13-qdoc-commands-topics.html#qmlsignal-command" translate="no">\qmlsignal</a>命令一样使用。</p> <p>参数是行余下部分。应该是声明信号的QML类型的名称,接着是<code translate="no">::</code>限定符,最后是信号名称。例如,在<code translate="no">GridView</code>元素中名为<code translate="no">add()</code>的附加信号被记录如下</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \qmlattachedsignal GridView::add() This attached signal is emitted immediately after an item is added to the view. */</pre></div> <p>QDoc将此记录包含在<a href="qml-qtquick-gridview.html" translate="no">GridView</a>元素的QML参考页中。</p> <div class="admonition note"> <p><b>注意:</b>像<a href="13-qdoc-commands-topics.html#qmlproperty-command" translate="no">\qmlproperty</a>一样,\qmlattachedsignal也接受其参数的部分为其QML模块标识符。</p> </div> <span id="qmlvaluetype-command"></span><h2 id="qmlvaluetype">\qmlvaluetype<a class="plink" href="#qmlvaluetype" title="直接链接到此标题"></a></h2> <p>\qmlvaluetype命令用于记录QML的<a href="qtqml-typesystem-valuetypes.html" translate="no">值类型</a>。该命令将类型名作为其唯一参数。</p> <p>\qmlvaluetype 与 <a href="13-qdoc-commands-topics.html#qmltype-command" translate="no">\qmltype</a> 命令功能上完全相同。唯一的区别是类型将被标记(并分组)为 <i>QML 值类型</i>。</p> <span id="qmlclass-command"></span><h2 id="qmlclass">\qmlclass<a class="plink" href="#qmlclass" title="Direct link to this headline"></a></h2> <p>此命令已弃用。请使用 <a href="13-qdoc-commands-topics.html#qmltype-command" translate="no">\qmltype</a> 代替。</p> <span id="qmlmethod-command"></span><h2 id="qmlmethod">\qmlmethod<a class="plink" href="#qmlmethod" title="Direct link to this headline"></a></h2> <p>\qmlmethod 命令用于记录 QML 方法。参数是完整的方法签名,包括返回类型和参数名称及类型。</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \qmlmethod void TextInput::select(int start, int end) Causes the text from \a start to \a end to be selected. If either start or end is out of range, the selection is not changed. After having called this, selectionStart will become the lesser, and selectionEnd the greater (regardless of the order passed to this method). \sa selectionStart, selectionEnd */</pre></div> <p>QDoc 将在此文档包含在 <a href="https://doc.qt.ac.cn/qt-5/qml-qtquick-textinput.html#select-method" translate="no">TextInput</a> 元素的元素参考页上。</p> <span id="qmltype-command"></span><h2 id="qmltype">\qmltype<a class="plink" href="#qmltype" title="Direct link to this headline"></a></h2> <p>\qmltype 命令用于记录 QML 类型。命令有一个参数,即 QML 类型的名称。</p> <p>如果 QML 类型有一个等效的 C++ 类,可以使用 <a href="13-qdoc-commands-topics.html#instantiates-command" translate="no">\instantiates</a> 上下文命令来指定该类。</p> <p>使用 <a href="13-qdoc-commands-topics.html#inqmlmodule-command" translate="no">\inqmlmodule</a> 命令记录属于该类型的 QML 模块。传递给此命令的参数必须与已记录的 <a href="13-qdoc-commands-topics.html#qmlmodule-command" translate="no">\qmlmodule</a> 页面匹配。</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \qmltype Transform \instantiates QGraphicsTransform \inqmlmodule QtQuick \brief Provides a way to build advanced transformations on Items. The Transform element is a base type which cannot be instantiated directly. */</pre></div> <p>在此,\qmltype 注释中包含 \instantiates 来指定 Transform 是与 C++ 类 <a href="qgraphicstransform.html" translate="no">QGraphicsTransform</a> 对应的 QML 对立面。Qmltype 注释应始终包含一个 <a href="16-qdoc-commands-status.html#since-command" translate="no">\since</a> 命令,因为所有 QML 类型都是新的。还应该包含一个 <a href="11-qdoc-commands-specialcontent.html#brief-command" translate="no">\brief</a> 描述。如果一个 QML 类型是 QML 类型组的一个成员,\qmltype 注释应包含一个或多个 <a href="19-qdoc-commands-grouping.html#ingroup-command" translate="no">\ingroup</a> 命令。</p> <span id="qmlproperty-command"></span><h2 id="qmlproperty">\qmlproperty<a class="plink" href="#qmlproperty" title="Direct link to this headline"></a></h2> <p>\qmlproperty 命令用于记录 QML 属性。参数是行剩余部分。参数文本应该是属性类型,后面跟着 QML 类型名称,代码 <code translate="no">::</code> 标识符和最终属性名称。如果我们有一个名为 <code translate="no">x</code> 的 QML 属性,并在 QML 类型 <code translate="no">Translate</code> 中,该属性的类型为 <code translate="no">real</code>,那么它的 \qmlproperty 将看起来像这样</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \qmlproperty real Translate::x The translation along the X axis. */</pre></div> <p>QDoc 将此 QML 属性包含在 <a href="qml-qtquick-translate.html" translate="no">Translate</a> 类型的 QML 参考页上。</p> <p>如果 QML 属性是枚举类型或它包含标志的位组合,则可以使用 <a href="10-qdoc-commands-tablesandlists.html#value-command" translate="no">\value</a> 命令来记录可接受值。</p> <p>QDoc 接受完全限定的属性名称,包括 QML 模块标识符</p> <div class="pre"><pre class="cpp plain" translate="no">\qmlproperty bool QtQuick.Controls::Button::highlighted</pre></div> <p>如果指定,则模块标识符(上面,<code translate="no">QtQuick.Controls</code>)必须与相关 \qmltype 文档中传递给 <a href="13-qdoc-commands-topics.html#inqmlmodule-command" translate="no">\inqmlmodule</a> 命令的值匹配。如果该属性所属的 QML 类型名称在文档项目所有类型中是唯一的,则可以省略模块标识符。</p> <span id="qmlsignal-command"></span><h2 id="qmlsignal">\qmlsignal<a class="plink" href="#qmlsignal" title="Direct link to this headline"></a></h2> <p>\qmlsignal 命令用于记录 QML 信号。参数是行剩余部分。参数应该是:声明信号的 QML 类型,代码 <code translate="no">::</code> 标识符和最终信号名称。如果我们有一个名为 <code translate="no">clicked()</code> 的 QML 信号,则对其的文档如下</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \qmlsignal MouseArea::clicked(MouseEvent mouse) This signal is emitted when there is a click. A click is defined as a press followed by a release, both inside the MouseArea. */</pre></div> <p>QDoc 将此文档包含在 <a href="qml-qtquick-mousearea.html" translate="no">MouseArea</a> 类型的 QML 参考页上。</p> <div class="admonition note"> <p><b>注意:</b>与<a href="13-qdoc-commands-topics.html#qmlproperty-command" translate="no">\qmlproperty</a>类似,\qmlsignal接受将QML模块标识符作为其参数的一部分。</p> </div> <span id="qmlmodule-command"></span><h2 id="qmlmodule">\qmlmodule<a class="plink" href="#qmlmodule" title="直接链接到此标题"></a></h2> <p>使用\qmlmodule命令创建一个QML模块页面。QML模块页面是一系列QML类型或任何相关材料。该命令接受一个可选的<code translate="no"><VERSION></code>数字参数,类似于<a href="13-qdoc-commands-topics.html#group-command" translate="no">group-command</a>。</p> <p>通过将\inqmlmodule命令添加到文档类型的注释块中,可以将QML类型与模块关联。您可以使用模块名称和前缀两个冒号(<code translate="no">::</code>)链接到QML模块的任何成员。</p> <div class="pre"><pre class="cpp plain" translate="no">/*! A link to the TabWidget of the UI Component is \l {UIComponent::TabWidget}. */</pre></div> <p>QDoc为模块生成了一个页面,列出了模块的所有成员。</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \qmlmodule ClickableComponents This is a list of the Clickable Components set. A Clickable component responds to a \c clicked() event. */</pre></div> <span id="inqmlmodule-command"></span><h2 id="inqmlmodule">\inqmlmodule<a class="plink" href="#inqmlmodule" title="直接链接到此标题"></a></h2> <p>要将QML类型标记为在特定QML模块导入下可用,请在\a class="plink" href="#qmltype-command" translate="no">\qmltype</a>主题中插入\inqmlmodule命令。该命令仅将模块(导入)名称作为参数,没有版本号。</p> <p>QML模块名称必须与带有\qmlmodule命令文档的QML模块匹配。</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \qmltype ClickableButton \inqmlmodule ClickableComponents A clickable button that responds to the \c click() event. */</pre></div> <p>QDoc在QML类型参考页面顶部的表中输出行<i>导入语句:import <qmlmodule></i>。</p> <p>在链接到QML类型时,QML模块标识符可能出现在链接目标中。例如</p> <div class="pre"><pre class="cpp plain" translate="no">\l {ClickableComponents::}{ClickableButton}</pre></div> <p>链接到类型参考页面,其中<i>ClickableButton</i>为链接文本。</p> <span id="instantiates-command"></span><h2 id="instantiates">\instantiates<a class="plink" href="#instantiates" title="直接链接到此标题"></a></h2> <p>\instantiates命令必须与<b class="redFont"><code.translate="no">\qdoccmd</code></b> qmltype主题命令结合使用。该命令接受一个C++类作为其参数。如果QDoc找不到C++类,则它会发出警告。</p> <p>使用\instantiates命令指定类型在C++中的名称。任何QML类型只能是一个C++类的对应物。</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \qmltype Transform \instantiates QGraphicsTransform \inqmlmodule QtQuick \brief Provides a way to build advanced transformations on Items. The Transform element is a base type which cannot be instantiated directly. */</pre></div> <p>在这里,\qmltype注释中包含<a href="13-qdoc-commands-topics.html#instantiates-command" translate="no">\instantiates</a>,指定Transform是<a href="qgraphicstransform.html" translate="no">QGraphicsTransform</a>。</p> <span id="typealias-command"></span><h2 id="typealias">\typealias<a class="plink" href="#typealias" title="直接链接到此标题"></a></h2> <p>\typealias命令类似于\a class="plink" href="#typedef-command" translate="no">\typedef</a>,但特定于记录C++类型别名。</p> <div class="pre"><pre class="cpp prettyprint" translate="no"><span class="keyword">class</span> Foo { <span class="keyword">public</span>: <span class="keyword">using</span> ptr <span class="operator">=</span> <span class="type">void</span><span class="operator">*</span>; <span class="comment">// ...</span> }</pre></div> <p>这可以记录为</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \typealias Foo::ptr */</pre></div> <p>\typealias命令是在QDoc 5.15中引入的。</p> <p>另请参阅<a href="13-qdoc-commands-topics.html#typedef-command" translate="no">\typedef</a>。</p> <span id="typedef-command"></span><h2 id="typedef">\typedef<a class="plink" href="#typedef" title="直接链接到此标题"></a></h2> <p>\typedef命令用于记录C++ typedef。参数是typedef的名称。有关typedef的文档将包含在声明该typedef的类、命名空间或头文件的参考文档中。要将\typedef与类、命名空间或头文件相关联,必须包含<a href="18-qdoc-commands-relating.html#relates-command" translate="no">\relates</a>命令。</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \typedef QObjectList \relates QObject Synonym for QList<QObject>. */</pre></div> <p>其他typedef位于定义它们的类的参考页面上。</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \typedef QList::Iterator Qt-style synonym for QList::iterator. */</pre></div> <p>另请参阅<a href="13-qdoc-commands-topics.html#typealias-command" translate="no">\typealias</a>。</p> <span id="variable-command"></span><h2 id="variable">\variable<a class="plink" href="#variable" title="直接链接到此标题"></a></h2> <p>\variable命令用于记录类成员变量或常量。参数是变量或常量名称。\variable命令注释包括一个<a href="11-qdoc-commands-specialcontent.html#brief-command" translate="no">\brief</a>命令。QDoc基于\brief命令中的文本生成文档。</p> <p>文档将位于相关联的类、头文件或命名空间文档中。</p> <p>在成员变量的情况下</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \variable QStyleOption::palette \brief The palette that should be used when painting the control */</pre></div> <p>您还可以使用\variable命令来注释常量。例如,假设您在<a href="qtreewidgetitem.html" translate="no">QTreeWidgetItem</a>类中定义了<code translate="no">Type</code>和<code translate="no">UserType</code>常量。</p> <div class="pre"><pre class="cpp prettyprint" translate="no"><span class="keyword">enum</span> { Type <span class="operator">=</span> <span class="number">0</span><span class="operator">,</span> UserType <span class="operator">=</span> <span class="number">1000</span> };</pre></div> <p>对于这些常量,\variable命令可以这样使用:</p> <div class="pre"><pre class="cpp plain" translate="no">/*! \variable QTreeWidgetItem::Type The default type for tree widget items. \sa UserType, type() */</pre></div> <div class="pre"><pre class="cpp plain" translate="no">/*! \variable QTreeWidgetItem::UserType The minimum value for custom types. Values below UserType are reserved by Qt. \sa Type, type() */</pre></div> </div> <!-- @@@13-qdoc-commands-topics.html --> <p class="naviNextPrevious footerNavi"> <a class="prevPage" href="27-qdoc-commands-alphabetical.html">命令索引</a> <a class="nextPage" href="14-qdoc-commands-contextcommands.html">环境命令</a></p> </div> <p class="copy-notice"> <abbr title="版权">©</abbr> 2024 Qt公司。在此文档中的贡献归各自所有者所有。提供的文档根据<a href="http://www.gnu.org/licenses/fdl.html">GNU自由文档许可协议1.3版</a>(由自由软件基金会发布)的条款进行许可。Qt及其相关标志是Qt公司在芬兰和其他国家的商标。所有其他商标均为各自所有者的财产。</p> </div> </article> <aside class="b-sidebar__content__right"> <div class="h-wysiwyg-html" data-scheme=""> <h6><strong>目录</strong></h6> <nav> <ul class="c-tableofcontents js-c-tableofcontents" data-tableofcontents-id="wrapperid" data-margin-top="sm"> <li class="level2"><p><a href="#nomenclature-for-files-generated-by-topic-commands">主题命令生成的文件名称规范</a></p></li> <li class="level1"><p><a href="#class">\class</a></p></li> <li class="level1"><p><a href="#enum">\enum</a></p></li> <li class="level1"><p><a href="#example">\example</a></p></li> <li class="level1"><p><a href="#externalpage">\externalpage</a></p></li> <li class="level1"><p><a href="#fn-function">\fn(函数)</a></p></li> <li class="level1"><p><a href="#group">\group</a></p></li> <li class="level1"><p><a href="#headerfile">\headerfile</a></p></li> <li class="level1"><p><a href="#macro">\macro</a></p></li> <li class="level1"><p><a href="#module">\module</a></p></li> <li class="level1"><p><a href="#namespace">\namespace</a></p></li> <li class="level1"><p><a href="#page">\page</a></p></li> <li class="level1"><p><a href="#property">\property</a></p></li> <li class="level1"><p><a href="#qmlattachedproperty">\qmlattachedproperty</a></p></li> <li class="level1"><p><a href="#qmlattachedsignal">\qmlattachedsignal</a></p></li> <li class="level1"><p><a href="#qmlvaluetype">\qmlvaluetype</a></p></li> <li class="level1"><p><a href="#qmlclass">\qmlclass</a></p></li> <li class="level1"><p><a href="#qmlmethod">\qmlmethod</a></p></li> <li class="level1"><p><a href="#qmltype">\qmltype</a></p></li> <li class="level1"><p><a href="#qmlproperty">\qmlproperty</a></p></li> <li class="level1"><p><a href="#qmlsignal">\qmlsignal</a></p></li> <li class="level1"><p><a href="#qmlmodule">\qmlmodule</a></p></li> <li class="level1"><p><a href="#inqmlmodule">\inqmlmodule</a></p></li> <li class="level1"><p><a href="#instantiates">\instantiates</a></p></li> <li class="level1"><p><a href="#typealias">\typealias</a></p></li> <li class="level1"><p><a href="#typedef">\typedef</a></p></li> <li class="level1"><p><a href="#variable">\variable</a></p></li> </ul> </nav> </div> <div class="h-wysiwyg-html" data-margin-top="md"> <h6><strong>下一页</strong></h6> <nav> <ul class="c-tableofcontents js-c-tableofcontents" data-tableofcontents-id="wrapperid" data-margin-top="sm"><li class="level1"><p><a class="" href="14-qdoc-commands-contextcommands.html">环境命令</a></p></li></ul> </nav> <h6><strong>上一页</strong></h6> <nav> <ul class="c-tableofcontents js-c-tableofcontents" data-tableofcontents-id="wrapperid" data-margin-top="sm"><li class="level1"><p><a class="" href="27-qdoc-commands-alphabetical.html">命令索引</a></p></li></ul> </nav> </div> </aside> </div> </div> </div> </div> <div id="footer"> <div class="l-footer"> <div class="l-footer__container"> <div class="l-footer__row l-footer__row--no-padding-bottom"> <div class="l-footer__column l-footer__company"> <div class="l-footer__logo"> <a href="https://www.qt.io/?hsLang=en" class="c-logo-footer"> <img src="/images/qtgroup.svg"> </a> </div> <div class="c-social-media-links"> <a href="https://twitter.com/qtproject" target="_blank" rel="noopener" class="fm_button fm_twitter"><span></span></a> <a href="https://www.facebook.com/qt/" target="_blank" rel="noopener" class="fm_button fm_facebook"><span></span></a> <a href="https://www.youtube.com/user/QtStudios" target="_blank" rel="noopener" class="fm_button fm_youtube"><span></span></a> <a href="https://www.linkedin.com/company/qtgroup/" target="_blank" rel="noopener" class="fm_button fm_linkedin"><span></span></a> </div> <div class="l-footer__contact"> <a class="c-btn " href="https://www.qt.io/contact-us?hsLang=en">联系我们</a> </div> </div> <div class="l-footer__column l-footer__navigation"> <div class="c-footer-navigation"> <span><div class="hs-menu-wrapper" role="navigation" aria-label="Navigation Menu"> <ul role="menu"> <li class="hs-menu-item hs-menu-depth-1 hs-item-has-children" role="none"><a href="javascript:;" aria-haspopup="true" aria-expanded="false" role="menuitem">Qt集团</a> <ul role="menu" class="hs-menu-children-wrapper"> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/group" role="menuitem">我们的故事</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/brand" role="menuitem">品牌</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/newsroom" role="menuitem">新闻</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/careers" role="menuitem">职业发展</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/investors" role="menuitem">投资者</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/product" role="menuitem">Qt产品</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/product/quality-assurance" role="menuitem">质量保证产品</a></li> </ul></li> <li class="hs-menu-item hs-menu-depth-1 hs-item-has-children" role="none"><a href="javascript:;" aria-haspopup="true" aria-expanded="false" role="menuitem">许可</a> <ul role="menu" class="hs-menu-children-wrapper"> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/terms-conditions" role="menuitem">许可协议</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/licensing/open-source-lgpl-obligations" role="menuitem">开源</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/pricing" role="menuitem">计划和定价</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/download" role="menuitem">下载</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/faq/overview" role="menuitem">常见问题解答</a></li> </ul></li> <li class="hs-menu-item hs-menu-depth-1 hs-item-has-children" role="none"><a href="javascript:;" aria-haspopup="true" aria-expanded="false" role="menuitem">学习Qt</a> <ul role="menu" class="hs-menu-children-wrapper"> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/academy" role="menuitem">针对学习者</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/qt-educational-license" role="menuitem">针对学生和教师</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://doc.qt.ac.cn/" role="menuitem" target="_blank" rel="noopener">Qt文档</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://forum.qt.io/" role="menuitem" target="_blank" rel="noopener">Qt论坛</a></li> </ul></li> <li class="hs-menu-item hs-menu-depth-1 hs-item-has-children" role="none"><a href="javascript:;" aria-haspopup="true" aria-expanded="false" role="menuitem">支持与服务</a> <ul role="menu" class="hs-menu-children-wrapper"> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/qt-professional-services" role="menuitem">专业服务</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/customer-success" role="menuitem">客户成功</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/qt-support/" role="menuitem">支持服务</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/contact-us/partners" role="menuitem">伙伴关系</a></li> <li class="hs-menu-item hs-menu-depth-2" role="none"><a href="https://www.qt.io/qt-world" role="menuitem" target="_blank" rel="noopener">Qt世界</a></li> </ul></li> </ul> </div></span> </div> </div> </div> <div class="l-footer__row"> <div class="l-footer__column l-footer__legal"> <div class="c-footer-secondary-navigation"> <span><div class="hs-menu-wrapper" role="navigation" aria-label="Navigation Menu"> <ul role="menu"> <li class="hs-menu-item hs-menu-depth-1" role="none"><a href="javascript:;" role="menuitem">© 2024 Qt公司</a></li> <li class="hs-menu-item hs-menu-depth-1" role="none"><a href="mailto:feedback@qt.io?Subject=Feedback%20about%20doc.qt.io%20site">反馈</a></li> </ul> </div></span> <p class="c-footer-secondary-navigation__group-notice">Qt公司包括Qt公司Oy及其全球子公司和分支机构。</p> </div> </div> <div class="l-footer__column l-footer__some-links"> </div> </div> </div> </div> </div></body></html>