Doc: Split qmldir entries table into subsections

There are two main problems with the existing table:
* The user has to scroll horizontally to view all the content in the
  right column.
* It is difficult to link to the individual entries.

Splitting the column into subsections solves these issues. In addition,
add a list of all the commands in the qmldir file to get a quick
overview of the subsections that follow.

Also, make small grammatical fixes to the text.

Fixes: QTBUG-105239
Pick-to: 6.4 6.3 6.2 5.15
Change-Id: Ic33caedf317ae1d33ecc606cffc5d664490e242c
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
This commit is contained in:
Andreas Eliasson 2022-08-11 09:16:17 +02:00
parent f2c87dda91
commit 2bd4ee37ff
1 changed files with 238 additions and 229 deletions

View File

@ -19,48 +19,64 @@ module. For more information about the first form of \c qmldir file, see
\section1 Contents of a Module Definition qmldir File
A \c qmldir file is a plain-text file that contains
the following commands:
A \c qmldir file is a plain-text file that contains the following commands:
\list
\li \l {Module Identifier Declaration}
\li \l {Object Type Declaration}
\li \l {Internal Object Type Declaration}
\li \l {JavaScript Resource Declaration}
\li \l {Plugin Declaration}
\li \l {Plugin Classname Declaration}
\li \l {Type Description File Declaration}
\li \l {Module Dependencies Declaration}
\li \l {Module Import Declaration}
\li \l {Designer Support Declaration}
\li \l {Preferred Path Declaration}
\endlist
\note Each command in a \c qmldir file must be on a separate line.
In addition to commands, you can also add comments, which are lines starting
with \c {#}.
\section2 Module Identifier Declaration
\table 70%
\header
\li Syntax
\li Usage
\row
\li
\code
module <ModuleIdentifier>
\endcode
\li Declares the module identifier of the module.
The <ModuleIdentifier> is the (dotted URI notation) identifier
for the module, which must match the module's install path.
Declares the module identifier of the module. The <ModuleIdentifier> is the
(dotted URI notation) identifier for the module, which must match the module's
install path.
The \l{Identified Modules#Semantics of Identified Modules}
{module identifier directive} must be the first line of the file.
Exactly one module identifier directive may exist in the \c qmldir
file.
{module identifier directive} must be the first line of the file. Exactly one
module identifier directive may exist in the \c qmldir file.
Example:
\code
module ExampleModule
\endcode
\row
\li
\section2 Object Type Declaration
\code
[singleton] <TypeName> <InitialVersion> <File>
\endcode
\li Declares a \l{qtqml-typesystem-objecttypes.html}{QML object type}
Declares a \l{qtqml-typesystem-objecttypes.html}{QML object type}
to be made available by the module.
\list
\li \c [singleton] Optional. Used to declare a singleton type.
\li \c <TypeName> is the type being made available
\li \c <InitialVersion> is the module version for which the type is to be made available
\li \c <File> is the (relative) file name of the QML file that defines the type
\li \c <InitialVersion> is the module version for which the type is to be
made available
\li \c <File> is the (relative) file name of the QML file that defines
the type
\endlist
Zero or more object type declarations may exist in the \c qmldir
file, however each object type must have a unique type name within
file. However, each object type must have a unique type name within
any particular version of the module.
\note To declare a \c singleton type, the QML file defining the
type must include the \c {pragma Singleton} statement.
@ -91,12 +107,13 @@ Text {
}
\endcode
\row
\li
\section2 Internal Object Type Declaration
\code
internal <TypeName> <File>
\endcode
\li Declares an object type that is in the module but should not be
Declares an object type that is in the module but should not be
made available to users of the module.
Zero or more internal object type declarations may exist in the
@ -107,23 +124,24 @@ internal <TypeName> <File>
internal MyPrivateType MyPrivateType.qml
\endcode
This is necessary if the module may be imported remotely (see
\l{Identified Modules#Remotely Installed Identified Modules}
This is necessary if the module is imported remotely
(see \l{Identified Modules#Remotely Installed Identified Modules}
{Remotely Installed Identified Modules}) because if an exported type depends
on an non-exported type within the module, the engine must also
on a non-exported type within the module, the engine must also
load the non-exported type.
\row
\li
\section2 JavaScript Resource Declaration
\code
<ResourceIdentifier> <InitialVersion> <File>
\endcode
\li Declares a JavaScript file to be made available by the module.
Declares a JavaScript file to be made available by the module.
The resource will be made available via the specified identifier
with the specified version number.
Zero or more JavaScript resource declarations may exist in the
\c qmldir file, however each JavaScript resource must have a unique
\c qmldir file. However, each JavaScript resource must have a unique
identifier within any particular version of the module.
Example:
@ -136,12 +154,13 @@ MyScript 1.0 MyScript.js
\l{qtqml-javascript-imports.html}
{Importing JavaScript Resources In QML} for more information.
\row
\li
\section2 Plugin Declaration
\code
[optional] plugin <Name> [<Path>]
\endcode
\li Declares a plugin to be made available by the module.
Declares a plugin to be made available by the module.
\list
\li \c optional denotes that the plugin itself does not contain
@ -151,7 +170,7 @@ MyScript 1.0 MyScript.js
other means, QML will not load the plugin.
\li \c <Name> is the plugin library name. This is usually not the
same as the file name of the plugin binary, which is platform
dependent; e.g. the library \c MyAppTypes would produce
dependent. For example, the library \c MyAppTypes would produce
\c libMyAppTypes.so on Linux and \c MyAppTypes.dll on Windows.
\li \c <Path> (optional) specifies either:
\list
@ -160,39 +179,42 @@ MyScript 1.0 MyScript.js
\li a relative path from the directory containing the \c qmldir
file to the directory containing the plugin file.
\endlist
\endlist
By default the engine searches for the plugin library in the
By default, the engine searches for the plugin library in the
directory that contains the \c qmldir file. (The plugin search
path can be queried with QQmlEngine::pluginPathList() and
modified using QQmlEngine::addPluginPath().)
\endlist
Zero or more C++ plugin declarations may exist in the \c qmldir
file, however since plugin loading is a relatively expensive
file. However, since plugin loading is a relatively expensive
operation, clients are advised to specify at most a single plugin.
Example:
\code
plugin MyPluginLibrary
\endcode
\row
\li
\section2 Plugin Classname Declaration
\code
classname <C++ plugin class>
\endcode
\li Provides the class name of the C++ plugin used by the module.
Provides the class name of the C++ plugin used by the module.
This information is required for all the QML modules that depend
on a C++ plugin for additional functionality. Qt Quick applications
built with static linking cannot resolve the module imports without
this information.
\row
\li
\section2 Type Description File Declaration
\code
typeinfo <File>
\endcode
\li Declares a \l{Type Description Files}{type description file} for
Declares a \l{Type Description Files}{type description file} for
the module that can be read by QML tools such as Qt Creator to
access information about the types defined by the module's plugins.
\c <File> is the (relative) file name of a \c .qmltypes file.
@ -205,12 +227,13 @@ typeinfo mymodule.qmltypes
Without such a file, QML tools may be unable to offer features such
as code completion for the types defined in your plugins.
\row
\li
\section2 Module Dependencies Declaration
\code
depends <ModuleIdentifier> <InitialVersion>
\endcode
\li Declares that this module depends on another.
Declares that this module depends on another.
Example:
\code
@ -219,15 +242,17 @@ depends MyOtherModule 1.0
This declaration is necessary only in cases when the dependency is
hidden: for example, when the C++ code for one module is used to
load QML (perhaps conditionally) which then depends on other
load QML (perhaps conditionally), which then depends on other
modules. In such cases, the \c depends declaration is necessary
to include the other modules in application packages.
\row
\li
\section2 Module Import Declaration
\code
import <ModuleIdentifier> [<Version>]
\endcode
\li Declares that this module imports another.
Declares that this module imports another.
Example:
\code
@ -236,49 +261,37 @@ import MyOtherModule 1.0
The types from the other module are made available in the same type
namespace as this module is imported into. Omitting the version
imports the latest version available of the other module, specifying
imports the latest version available of the other module. Specifying
\c auto as version imports the same version as the version of this
module specified in the QML \c import statement.
\row
\li
\code
# <Comment>
\endcode
\li Declares a comment. These are ignored by the engine.
\section2 Designer Support Declaration
Example:
\code
# this is a comment
\endcode
\row
\li
\code
designersupported
\endcode
\li Set this property if the plugin is supported by Qt Quick Designer.
Set this property if the plugin is supported by Qt Quick Designer.
By default, the plugin will not be supported.
A plugin that is supported by Qt Quick Designer has to be properly
tested. This means that the plugin does not crash when running inside
the qml2puppet that is used by Qt Quick Designer to execute QML.
Generally the plugin should work well in the Qt Quick Designer
and not cause any show stoppers, like taking huge amounts of memory,
slowing down the qml2puppet heavily or anything else that renders
Generally, the plugin should work well in the Qt Quick Designer
and not cause any show stoppers, like taking excessive amounts of memory,
slowing down the qml2puppet heavily, or anything else that renders
the plugin effectively unusable in the Qt Quick Designer.
The items of an unsupported plugin are not painted in the Qt Quick Designer,
but they are still available as empty boxes and the properties can be edited.
\row
\li
\section2 Preferred Path Declaration
\code
prefer <Path>
\endcode
\li This property directs the QML engine to load any further files for this
This property directs the QML engine to load any further files for this
module from <path>, rather than the current directory. This can be used
to load files compiled with qmlcachegen.
@ -288,10 +301,6 @@ prefer <Path>
than the ones in the file system. If you then use qmlcachegen for those,
the pre-compiled files will be available to any clients of the module.
\endtable
Each command in a \c qmldir file must be on a separate line.
\section1 Versioning Semantics
All QML types that are exported for a particular major version are available