summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.qmake.conf2
-rw-r--r--doc/config/qtdoc.qdocconf5
-rw-r--r--doc/src/deployment/deployment.qdoc144
-rw-r--r--doc/src/external-resources.qdoc20
-rw-r--r--doc/src/graphics.qdoc22
-rw-r--r--doc/src/highdpi.qdoc13
-rw-r--r--doc/src/legal/licensechanges.qdoc187
-rw-r--r--doc/src/platforms/android-building.qdoc7
-rw-r--r--doc/src/platforms/android-platform-notes.qdoc97
-rw-r--r--doc/src/platforms/android.qdoc7
-rw-r--r--doc/src/platforms/configure-linux-device.qdoc2
-rw-r--r--doc/src/platforms/emb-fonts.qdoc10
-rw-r--r--doc/src/platforms/emb-linux.qdoc237
-rw-r--r--doc/src/platforms/inputs-linux-device.qdoc267
-rw-r--r--doc/src/platforms/macos.qdoc9
-rw-r--r--doc/src/platforms/supported-platforms.qdoc2
-rw-r--r--doc/src/platforms/supported-platforms.qdocinc19
-rw-r--r--doc/src/platforms/windows.qdoc38
-rw-r--r--doc/src/qmlapp/performance.qdoc46
-rw-r--r--doc/src/qtmodules.qdoc9
-rw-r--r--doc/src/snippets/code/doc_src_appicon.qdoc2
-rw-r--r--doc/src/source-breaks.qdoc2
-rw-r--r--examples/demos/photosurface/resources/photosurface.rc2
23 files changed, 591 insertions, 558 deletions
diff --git a/.qmake.conf b/.qmake.conf
index 543d0a842..db2e0b653 100644
--- a/.qmake.conf
+++ b/.qmake.conf
@@ -1,3 +1,3 @@
load(qt_build_config)
-MODULE_VERSION = 5.13.2
+MODULE_VERSION = 5.14.0
diff --git a/doc/config/qtdoc.qdocconf b/doc/config/qtdoc.qdocconf
index 584b95ee3..f2edc47cd 100644
--- a/doc/config/qtdoc.qdocconf
+++ b/doc/config/qtdoc.qdocconf
@@ -38,11 +38,13 @@ depends += \
qtpositioning \
qtprintsupport \
qtqml \
+ qtqmlmodels \
qtqmltest \
qtquick \
qtquickcontrols \
qtquickdialogs \
qtquickextras \
+ qtquicktimeline \
qtscript \
qtscripttools \
qtscxml \
@@ -72,7 +74,8 @@ depends += \
qtspeech \
qtnetworkauth \
qtremoteobjects \
- qtdistancefieldgenerator
+ qtdistancefieldgenerator \
+ qtquick3d
headerdirs += ../src
imagedirs += ../src/images \
diff --git a/doc/src/deployment/deployment.qdoc b/doc/src/deployment/deployment.qdoc
index ebfda3f40..c7ad08bf3 100644
--- a/doc/src/deployment/deployment.qdoc
+++ b/doc/src/deployment/deployment.qdoc
@@ -134,27 +134,61 @@
This article gives a technical description of the steps required to take
any given Qt application and deploy it to an Android device (or market place).
- It is recommended that you use the \l {androiddeployqt}{androiddeployqt deployment tool} or
- Qt Creator to automate this work rather than perform the steps manually. The following
- information will give you a technical insight into the structure of the resulting Android
- application which is not normally required just to write an application.
+ It is recommended that you use Qt Creator or the Makefile created by qmake to
+ create the application bundle. The following information will give you a technical
+ insight into the structure of the resulting Android application which is not normally
+ required just to write an application.
+
+ All the steps described here are handled automatically by the build script and
+ the \l {androiddeployqt}{androiddeployqt deployment tool}, which are run by Qt Creator
+ for you.
+
+ \note If you prefer building Android packages from the command line, you may use the "aab"
+ or "apk" build targets in the Makefile directly:
+
+ \code
+ % make aab
+ \endcode
+
+ or
+
+ \code
+ % make apk
+ \endcode
\tableofcontents
- \section1 The APK Package
+ \section1 The Application Bundle
+
+ Applications on Android can be packaged in two ways: Either as Application Package (APK)
+ or Android App Bundle (AAB). Both are ZIP files which follow a predefined directory
+ structure. The difference between the two is that APK files can be downloaded to
+ and executed on a device. AAB, on the other hand, is intended to be interpreted by the
+ Google Play store and is used to generate APK files.
+
+ For testing the application locally, the APK format is the most appropriate, as this can
+ be uploaded directly to the device and run. For distribution to the Google Play store, it is
+ recommended that you use AAB instead, which has a similar layout. The added convenience
+ of AAB is that you can include all target ABIs in the same bundle without increasing the
+ size of the actual package downloaded by your users. When using AAB, the Google Play store
+ generates optimized APK packages for the devices issuing the download request and
+ automatically sign them with your publisher key.
+
+ Read \l{https://developer.android.com/guide/app-bundle}{the Android documentation} if you
+ want to know more about the AAB format.
- Applications on Android are packaged in a specially structured type of ZIP file called \c APK.
- When you build a Qt application using \c qmake and \c make, the result will be a binary file
- which is built with the correct compiler and flags to be usable on an Android device with the
- target architecture.
+ In either case, the files must be copied into a special directory structure first, before
+ bundling them in a single ZIP file
- In order to turn this into a runnable application, it has to be put into a special directory
- structure with some other files and packaged into an APK package.
+ This contains one or more binary \c .so files with the code for your application, as
+ well as any dependencies, such as Qt's libraries and plugins. In addition, it includes
+ \c .jar files containing compiled Java code, assets, resources, and some \c .xml
+ files that are used to describe the contents of the bundle.
\section1 Package Template
- A template for the other sources of an APK package is contained in \c{$QTDIR/src/android/java}.
- The first step of making an APK is to copy these files into an empty directory. In this
+ A template for the other sources of an APK package is contained in \c{$QTDIR/src/android/templates}.
+ The first step of making a package manually is to copy these files into an empty directory. In this
guide, we'll refer to this build directory as \c{$BUILD_TARGET}.
We also need to make sure the application binary is copied into the package. This can be
@@ -180,31 +214,17 @@
\c{AndroidManifest.xml} file, please refer to the
\l{http://developer.android.com/guide/topics/manifest/manifest-intro.html}{Android documentation on this topic}.
- There are some special variables recognized by Qt which can be placed inside the manifest:
-
- \list
- \li \c{android.app.use_local_qt_libs}: If this is set to \c 1, Qt libraries are expected to be
- found on the target device. If it is \c 0, then libraries must be requested from the \b Ministro
- service.
- \li \c{android.app.bundle_local_qt_libs}: If set to \c 1, the Qt libraries are expected to be
- bundled as part of the \c APK. If set to \c 0, they are expected to be found in the
- \c{/data/local/tmp/qt} folder on the target device.
-
- \note If \c{use_local_qt_libs} is 0, then this variable has no effect, since libraries
- are then requested through Ministro instead.
- \endlist
-
- Other variables in the manifest refer to resources, and more information about these can
- be found in the \l{Resources}{documentation for the resources} below.
+ The default manifest contains some special parameters used by Qt to set up the application for
+ running. When you are creating your own Android manifest, you must make sure that it contains these
+ parameters. The \c androiddeployqt tool replaces content in the template with the correct
+ values.
\section2 Java Code
Under \c{$BUILD_TARGET/src} are the files comprising the Java code of the Android application.
The regular Android application launcher is a Java process, so Qt applications have a
Java-based entry point. The code in here will load the required Qt libraries, based on the
- meta-information given in other files in the template. The code supports all the
- three deployment mechanisms which are supported in Qt Creator and \c{androiddeployqt}: \e Bundled,
- \e Ministro and \e Debug.
+ meta-information given in other files in the template.
After loading the libraries, the Java code will call into the application's native \c{main()}
function on a new thread and the application will launch. At this point, the Java code in
@@ -228,9 +248,9 @@
//@ANDROID-21
\endcode
- If your minimum Android API level is 20 or lower, then the code should be removed before
+ If your minimum Android API level is 20 or lower, the code is removed before
building, since it's not a supported API on Android API level 20. However, if your minimum API
- level is 21 or higher, it should be left in.
+ level is 21 or higher, it is left in.
\section2 Resources
@@ -252,29 +272,13 @@
necessary Qt libraries. This is used when the Ministro deployment mechanism is active. Read the
\l{http://necessitas.kde.org/necessitas/ministro.php}{Ministro documentation} for more
information about such repositories.
- \li \c{repository}: The Ministro repository to use at the given URL. This is used when the
- Ministro deployment mechanism is active.
- \li \c{bundled_libs}: Libraries in the APK's library folder which should be loaded on start-up.
+ \li \c{bundled_libs}: Libraries in the package's library folder which should be loaded on start-up.
Library names should be specified without the \c lib prefix and \c{.so} suffix.
\li \c{qt_libs}: Qt libraries which should be loaded on start-up. When bundled deployment is
used, these are expected to be found inside the \c{APK}'s library folder. When Ministro
deployment is in use, they are requested from the Ministro service on the device. And when
debugging deployment is in use, they are loaded from the \c{/data/local/tmp/qt} directory on the
target device.
- \li \c{bundled_in_lib}: List of plugins which are bundled in the \c{APK}'s library folder. This
- is only used when the bundling deployment mechanism is active. Qt's plugin system requires
- plugins to be placed in a special directory structure which contains information about the
- plugin category. The library folder in the APK does not support such a directory
- structure, so the bundled_in_lib array contains the information lost when the directory
- structure is flattened. Each item is a pair of paths, separated by a colon. The first of the
- pair is the file name of the file bundled inside the \c{APK}'s library folder. The second of the
- pair is the original path of the file, relative to the Qt installation.
- \li \c{bundled_in_assets}: List of other types of Qt files which are bundled inside the
- \c{APK}'s asset folder. This value is only used when the bundling deployment mechanism is active. The
- format of the items is the same as for the \c{bundled_in_lib array}. The difference is that the
- first of the pairs refers to the path of a file inside the \c{assets} directory of the
- application instead of the library directory. This array is typically used for bundling QML
- imports, which also require a special directory structure to be used inside Qt.
\endlist
\section3 res/values/strings.xml
@@ -291,43 +295,31 @@
Under \c libs in the package directory, it's possible to place libraries that should be included
in the application bundle. \c JAR libraries should be placed directly under \c{libs/}, while
- shared libraries should be put in a subdirectory suitably named after the target architecture
+ shared libraries should be put in a subdirectory suitably named after the target ABI
of the libraries.
- For deployment that bundles Qt in the \c APK, the Qt \c JAR files that are suffixed with
- \c{"bundled"} should be put into the libs directory. It is also required that the necessary
- shared libraries and plugins are placed in the appropriate subdirectory of libs.
-
\section1 Building the Android Application Package
- Once all the pieces are in place, a few steps are required to build the application package.
- First, a build script needs to be generated. This is done using the \c android tool which is
- part of the Google Android SDK.
-
- Example:
- \code
- % android update project --path $BUILD_TARGET --target android-16 --name QtApp
- \endcode
-
- This example will create build files in \c{$BUILD_TARGET} for an \c APK named \c QtApp. The Java
- code will be compiled against the \c{android-16} platform.
-
- The project can then be built using the ant tool. If a release package is built it can
- be signed and aligned using \c jarsigner and \c zipalign.
+ The project can be built using the gradle tool. If an APK intended for release is built, then
+ it should be signed and aligned using \c jarsigner and \c zipalign.
\section1 androiddeployqt
Building an application package is complex, so Qt comes with a tool which handles the work for
you. The steps described in this document so far are handled automatically by the tool.
+ In addition, there are Makefile build targets for building the package from the
+ command line. There is also automated support in Qt Creator for generating both \c APK and \c AAB
+ packages.
+
\section2 Required Steps Before Running androiddeployqt
- Before running the tool, you need run \c qmake and \c make your project. Running \c qmake
- creates the \c Makefile, and it will also generate a \c JSON file containing important settings
- used by \c androiddeployqt.
+ Before running the tool manually, you need to run \c qmake and \c make on your project. Running
+ \c qmake creates the \c Makefile, and it will also generate a \c JSON file containing important
+ settings used by \c androiddeployqt.
You should then install the application binary (and any other requirements) into the library
- folder of the \c APK. If \c{$BUILD_TARGET} is your build directory (the first time you do this,
+ folder of the \c bundle. If \c{$BUILD_TARGET} is your build directory (the first time you do this,
the directory should be empty at this point), then you can install the binary with the following
command:
@@ -345,6 +337,8 @@
is available by passing the \c{--help} argument to androiddeployqt.
\list
+ \li \c{--aab}: Generate an Android Application Bundle, rather than an APK. Note that this
+ invalidates some of the other arguments, such as --install.
\li \c{--input <file name>}: This allows you to specify the \c JSON file generated by \c qmake.
By default, \c androiddeployqt will try to guess the file name based on the current working
directory.
@@ -358,8 +352,6 @@
particular device or emulator will be requested by \c adb, causing it to pick a default instead.
\li \c{--android-platform <platform>}: The SDK platform used for building the Java code of the
application. By default, the latest available platform is used.
- \li \c{--ant <path>}: Specify the path to the \c ant executable. If this is unspecified,
- \c androiddeployqt will attempt to detect it on the \c PATH.
\li \c{--release}: Specify this to create a release package instead of a debug package. With no
other arguments, release packages are unsigned and cannot be installed to any device before
they have been signed by a private key.
diff --git a/doc/src/external-resources.qdoc b/doc/src/external-resources.qdoc
index 7374d3537..dad8eaf7a 100644
--- a/doc/src/external-resources.qdoc
+++ b/doc/src/external-resources.qdoc
@@ -370,3 +370,23 @@
\externalpage https://webassembly.org
\title WebAssembly Resource site
*/
+
+/*!
+ \externalpage https://www.freedesktop.org/wiki/Software/libinput
+ \title libinput
+*/
+
+/*!
+ \externalpage https://www.yoctoproject.org
+ \title Yocto Project
+*/
+
+/*!
+ \externalpage http://lct.sourceforge.net/
+ \title Linux Console Tools (LCT)
+*/
+
+/*!
+ \externalpage https://www.x.org/
+ \title X.org
+*/
diff --git a/doc/src/graphics.qdoc b/doc/src/graphics.qdoc
index 9bf4955e8..d4a5eac8a 100644
--- a/doc/src/graphics.qdoc
+++ b/doc/src/graphics.qdoc
@@ -101,10 +101,11 @@ QPainter and related classes are part of the \l {Qt GUI} module.
\section1 OpenGL and 3D
-OpenGL is the most widely adopted graphics API for hardware accelerated and 3D graphics, implemented on all
-desktop platforms and almost every mobile and embedded platform. The
-Qt library contains a number of classes that help users integrate
-OpenGL into their applications.
+OpenGL is the most widely adopted graphics API for hardware accelerated and 3D
+graphics, implemented on all desktop platforms and almost every mobile and
+embedded platform. The Qt library contains a number of classes that help users
+integrate graphics driven by OpenGL or other graphics API calls into their
+applications, as well as add-on modules for displaying 3D content.
\list
@@ -115,14 +116,19 @@ OpenGL into their applications.
\li \l {QOpenGLWidget}{QOpenGLWidget} is a widget that allows adding OpenGL
scenes into QWidget-based user interfaces.
- \li \l {Mixing Scene Graph and OpenGL}{OpenGL and Qt Quick 2.0} -
- How to integrate OpenGL into a the Qt Quick 2.0 scene graph.
+ \li \l {Mixing Scene Graph and the native graphics API}{OpenGL and Qt Quick 2.0}
+ - How to integrate application-provided graphics commands
+ (OpenGL, Vulkan, Direct3D, etc.) into a Qt Quick scene graph.
\li \l {http://www.khronos.org/opengl}{www.khronos.org/opengl} -
The official OpenGL pages.
- \li Qt Canvas 3D - An add-on module that provides a way to
- make OpenGL-like 3D drawing calls from Qt Quick using JavaScript.
+ \li \l {Qt Quick 3D} - An add-on module that provides a high-level API for
+ creating 3D content or UIs based on Qt Quick.
+
+ \li \l {Qt 3D} - An add-on module that provides functionality for near-realtime
+ simulation systems with support for 2D and 3D rendering, in both Qt C++ and
+ Qt Quick applications.
\endlist
diff --git a/doc/src/highdpi.qdoc b/doc/src/highdpi.qdoc
index 79144efb6..2409ce7c7 100644
--- a/doc/src/highdpi.qdoc
+++ b/doc/src/highdpi.qdoc
@@ -193,6 +193,18 @@
system coordinates, regardless of environment variables. This attribute takes priority
over Qt::AA_EnableHighDpiScaling.
+ \li The QT_ENABLE_HIGHDPI_SCALING environment variable, introduced in Qt 5.14,
+ enables automatic scaling based on the pixel density of the monitor. Replaces
+ QT_AUTO_SCREEN_SCALE_FACTOR.
+
+ \li The QT_SCALE_FACTOR_ROUNDING_POLICY environment variable and
+ QGuiApplication::highDpiScaleFactorRoundingPolicy API, introduced in Qt 5.14,
+ makes it possible to control if and how the device pixel ratio should be rounded
+ to the nearest integer. This is relevant for configurations like Windows at
+ 150% scale. Possible values are \c{Round}, \c{Ceil}, \c{Floor}, \c{RoundPreferFloor},
+ \c{PassThrough}. See the Qt::HighDpiScaleFactorRoundingPolicy enum documentation
+ for a full description of the options.
+
\li In Qt 5.4, there was an experimental implementation of high DPI scaling introduced via
the \c QT_DEVICE_PIXEL_RATIO environment variable, that you could set to a numerical
scale factor or \c auto. This variable was deprecated in Qt 5.6.
@@ -206,6 +218,7 @@
\list
\li let the application run as \e{DPI Unaware} on Windows
\li set the \c QT_AUTO_SCREEN_SCALE_FACTOR environment variable to \c 1.
+ \endlist
However, these options may result in some scaling or painting artifacts.
diff --git a/doc/src/legal/licensechanges.qdoc b/doc/src/legal/licensechanges.qdoc
index d27e29363..44a1aefa4 100644
--- a/doc/src/legal/licensechanges.qdoc
+++ b/doc/src/legal/licensechanges.qdoc
@@ -34,6 +34,41 @@
Changes in Qt and \l{Licenses Used in Qt}{Third Party Modules}
released with Qt that are relevant to licensing.
+ \section1 Qt 5.14.0
+
+ \section2 Qt Core Module
+
+ \list
+ \li \l{unicode-cldr}{Unicode Common Locale Data Repository (CLDR)} got updated to
+ upstream version v36.
+ \li \l{doubleconversion}{Efficient Binary-Decimal and Decimal-Binary Conversion Routines for IEEE Doubles}
+ got updated to upstream version 3.1.5.
+ \li The copy of the \l{psl}{The Public Suffix List} got updated on 2019-10-23.
+ \endlist
+
+ \section2 Qt SQL Module
+
+ \l{sqlite}{SQLite} got updated to upstream version 3.30.1.
+
+ \section2 Qt Wayland Compositor
+
+ The compositor module is no longer available under the GPLv2 and LGPLv3
+ licenses, but is still available under GPLv3 and commercial licenses.
+
+ \list
+ \li The xdg-output-unstable-v1 protocol version 2 was added under the
+ MIT License.
+ \li The idle-inhibit-unstable-v1 protocol version 1 was added under the
+ MIT License.
+ \endlist
+
+ \section2 Qt Wayland QPA plugin
+
+ \list
+ \li The primary-selection-unstable-v1 protocol version 1 was added
+ under the MIT License.
+ \endlist
+
\section1 Qt 5.13.2
\section2 Qt GUI Module
@@ -45,44 +80,44 @@
\section2 Qt SQL Module
- \l{SQLite} got updated to upstream version 3.29.0.
+ \l{sqlite}{SQLite} got updated to upstream version 3.29.0.
\section1 Qt 5.13.1
\section2 Qt Core Module
- \l{Unicode Common Locale Data Repository (CLDR)} got updated to
+ \l{unicode-cldr}{Unicode Common Locale Data Repository (CLDR)} got updated to
upstream version v35.1
\section2 Qt Image Formats
- \l{WebP (libwebp)} got updated to upstream version 1.0.3.
+ \l{libwebp}{WebP (libwebp)} got updated to upstream version 1.0.3.
\section1 Qt 5.13.0
\section2 Qt Core Module
\list
- \li The copy of the \l{The Public Suffix List} got updated on 2019-02-20.
+ \li The copy of the \l{psl}{The Public Suffix List} got updated on 2019-02-20.
The upstream license is now MPL 2.0.
- \li \l{PCRE2} got updated to upstream version 10.33.
- \li \l{PCRE2 - Stack-less Just-In-Time Compiler} got updated to upstream version 10.33.
+ \li \l{pcre2}{PCRE2} got updated to upstream version 10.33.
+ \li \l{pcre2-sljit}{PCRE2 - Stack-less Just-In-Time Compiler} got updated to upstream version 10.33.
\endlist
\section2 Qt SQL Module
- \l{SQLite} got updated to upstream version 3.28.0.
+ \l{sqlite}{SQLite} got updated to upstream version 3.28.0.
\section2 Qt GUI Module
\list
- \li \l{LibJPEG-turbo} got updated to upstream version 2.0.2.
- \li \l{LibPNG} got updated to upstream version 1.6.37.
+ \li \l{libjpeg}{LibJPEG-turbo} got updated to upstream version 2.0.2.
+ \li \l{libpng}{LibPNG} got updated to upstream version 1.6.37.
\endlist
\section2 Qt DBUS Module
- The \l{libdus-1 headers} got updated to upstream version 1.12.12.
+ The \l{libdbus-1-headers}{libdus-1 headers} got updated to upstream version 1.12.12.
\section2 Qt Wayland
@@ -101,63 +136,63 @@
\section2 Qt SQL Module
- \l{SQLite} got updated to upstream version 3.29.0.
+ \l{sqlite}{SQLite} got updated to upstream version 3.29.0.
\section1 Qt 5.12.5
\section2 Qt GUI Module
- Use of \l{Adobe Glyph List For New Fonts} under the \e{BSD-3-Clause}
+ Use of \l{aglfn}{Adobe Glyph List For New Fonts} under the \e{BSD-3-Clause}
license is now documented.
\section2 Qt Image Formats
- \l{WebP (libwebp)} got updated to upstream version 1.0.3.
+ \l{libwebp}{WebP (libwebp)} got updated to upstream version 1.0.3.
\section1 Qt 5.12.4
\section2 Qt GUI Module
- \l{LibPNG} got updated to upstream version 1.6.37.
+ \l{libpng}{LibPNG} got updated to upstream version 1.6.37.
\section2 Qt Core Module
\list
- \li \l{PCRE2} got updated to upstream version 10.33
- \li \l{PCRE2 - Stack-less Just-In-Time Compiler} got updated to
+ \li \l{pcre2}{PCRE2} got updated to upstream version 10.33
+ \li \l{pcre2-sljit}{PCRE2 - Stack-less Just-In-Time Compiler} got updated to
upstream version 10.33
- \li \l{Unicode Common Locale Data Repository (CLDR)} got updated to
+ \li \l{unicode-cldr}{Unicode Common Locale Data Repository (CLDR)} got updated to
upstream version v35.1
\endlist
\section2 Qt SQL Module
- \l{SQLite} got updated to upstream version 3.28.0.
+ \l{sqlite}{SQLite} got updated to upstream version 3.28.0.
\section1 Qt 5.12.3
\section2 Qt GUI Module
- The license of \l{Wintab API} was now classified as 'Custom' instead of
+ The license of \l{wintab}{Wintab API} was now classified as 'Custom' instead of
'Public Domain'.
\section2 Qt SQL Module
- \l{SQLite} got updated to upstream version 3.27.1.
+ \l{sqlite}{SQLite} got updated to upstream version 3.27.1.
\section1 Qt 5.12.2
\section2 Qt GUI Module
\list
- \li \l{Freetype 2} got updated to upstream version 2.9.1.
- \li \l{LibPNG} got updated to upstream version 1.6.36. libpng License 2
+ \li \l{freetype}{Freetype 2} got updated to upstream version 2.9.1.
+ \li \l{libpng}{LibPNG} got updated to upstream version 1.6.36. libpng License 2
added at same time.
\endlist
\section2 Qt Image Formats
- \l{WebP (libwebp)} got updated to upstream version 1.0.2.
+ \l{libwebp}{WebP (libwebp)} got updated to upstream version 1.0.2.
\section1 Qt 5.12.1
@@ -165,74 +200,74 @@
\list
\li The version information for \l{FreeBSD} got updated.
- \li The version information for \l{Secure Hash Algorithm SHA-3 - Keccak} got updated.
- \li \l{UCD} got updated to upstream version 20.
+ \li The version information for \l{sha3_keccak}{Secure Hash Algorithm SHA-3 - Keccak} got updated.
+ \li \l{unicode-character-database}{UCD} got updated to upstream version 20.
\endlist
\section2 Qt GUI Module
- \l{xkbcommon} was removed from 3rd party sources and we are not bundling that library any more.
+ \e{xkbcommon} was removed from 3rd party sources and we are not bundling that library any more.
\section2 Qt Image Formats
\list
- \l{WebP (libwebp)} got updated to upstream version 1.0.1.
+ \l{libwebp}{WebP (libwebp)} got updated to upstream version 1.0.1.
\l{libtiff} got updated to upstream version 4.0.10.
\endlist
\section2 Qt SQL Module
- \l{SQLite} got updated to upstream version 3.26.0.
+ \l{sqlite}{SQLite} got updated to upstream version 3.26.0.
\section2 Qt Virtual Keyboard Module
- The version information for \l{Lipi Toolkit} got updated.
+ The version information for \l{lipitk}{Lipi Toolkit} got updated.
\section2 Qt Wayland Compositor Module
- The usage of \l{Wayland EGLStream Controller Protocol} under MIT license is now documented.
+ The usage of \l{wayland-eglstream-controller}{Wayland EGLStream Controller Protocol} under MIT license is now documented.
\section1 Qt 5.12.0
\section2 Qt 3D Module
- Use of \l{Miramar Skybox Textures} is now documented.
+ Use of \l{miramar-sky}{Miramar Skybox Textures} is now documented.
\section2 Qt Core Module
\list
- \li \l{Efficient Binary-Decimal and Decimal-Binary Conversion Routines for IEEE Doubles}
+ \li \l{doubleconversion}{Efficient Binary-Decimal and Decimal-Binary Conversion Routines for IEEE Doubles}
got updated to upstream version 3.1.1.
- \li \l{PCRE2} got updated to upstream version 10.32.
- \li Use of \l{PCRE2 - Stack-less Just-In-Time Compiler} under the
+ \li \l{pcre2}{PCRE2} got updated to upstream version 10.32.
+ \li Use of \l{pcre2-sljit}{PCRE2 - Stack-less Just-In-Time Compiler} under the
\e{BSD 2-clause "Simplified"} license is now documented.
- \li \l{Secure Hash Algorithm SHA-3 - brg_endian} got updated to version
+ \li \l{sha3_endian}{Secure Hash Algorithm SHA-3 - brg_endian} got updated to version
https://github.com/BrianGladman/sha/ commit 4b9e13ead2c5b5e41ca27c65de4dd69ae0bac228.
License got updated to \e{BSD 2-clause "Simplified"} license.
- \li Use of \l{TinyCBOR} under the \e{MIT} license is now documented.
- \li \l{Unicode Common Locale Data Repository (CLDR)} got updated to
+ \li Use of \l{tinycbor}{TinyCBOR} under the \e{MIT} license is now documented.
+ \li \l{unicode-cldr}{Unicode Common Locale Data Repository (CLDR)} got updated to
upstream version v34.
\endlist
\section2 Qt GUI Module
\list
- \li The version information for \l{Freetype 2} got updated.
- \li The Qt usage documentation for \l{HarfBuzz} got updated.
- \li The Qt usage documentation for \l{HarfBuzz-NG} got updated.
- \li The version information for \l{IAccessible2 IDL Specification} got updated.
- \li \l{LibJPEG-turbo} got updated to upstream version 2.0.0.
- \li \l{LibPNG} got updated to upstream version 1.6.35.
- \li Use of \l{Bitstream Vera Font} under the \e{Bitstream Vera Font}
+ \li The version information for \l{freetype}{Freetype 2} got updated.
+ \li The Qt usage documentation for \l{harfbuzz}{HarfBuzz} got updated.
+ \li The Qt usage documentation for \l{harfbuzz-ng}{HarfBuzz-NG} got updated.
+ \li The version information for \l{iaccessible2}{IAccessible2 IDL Specification} got updated.
+ \li \l{libjpeg}{LibJPEG-turbo} got updated to upstream version 2.0.0.
+ \li \l{libpng}{LibPNG} got updated to upstream version 1.6.35.
+ \li Use of \l{vera_font}{Bitstream Vera Font} under the \e{vera_font}{Bitstream Vera Font}
license is now documented.
- \li \l{DejaVu Fonts} got updated to upstream version 2.37 and their use
+ \li \l{dejayvu}{DejaVu Fonts} got updated to upstream version 2.37 and their use
under the \e{Bitstream DejaVu Font} license is now documented.
- \li Use of \l{WebGradients} under the \e{MIT} license is now documented.
+ \li Use of \l{webgradients}{WebGradients} under the \e{MIT} license is now documented.
\endlist
\section2 Qt DBUS Module
- \l{libdus-1 headers} got updated to upstream version 1.12.
+ \l{libdbus-1-headers}{libdus-1 headers} got updated to upstream version 1.12.
\section2 Qt Image Formats
@@ -244,50 +279,50 @@
\section2 Qt Location Module
\list
- \li Use of \l{Tango Weather Icon Pack by Darkobra} is now documented.
- \li Use of \l{Tango Icons} is now documented.
+ \li Use of \l{weatherinfo-tango-weather-pack}{Tango Weather Icon Pack by Darkobra} is now documented.
+ \li Use of \l{weatherinfo-tango-icons}{Tango Icons} is now documented.
\endlist
\section2 Qt Test Module
- \l{Valgrind} got updated to upstream version 3.14.0.
+ \l{valgrind}{Valgrind} got updated to upstream version 3.14.0.
\section2 Qt Wayland Compositor Module
\list
- \li Use of \l{Wayland xdg-decoration Protocol} under the \e{MIT} license
+ \li Use of \l{wayland-xdg-decoration-protocol}{Wayland xdg-decoration Protocol} under the \e{MIT} license
is now documented.
- \li Use of \l{Wayland XDG Output Protocol} under the \e{MIT} license is
+ \li Use of \l{wayland-xdg-output-protocol}{Wayland XDG Output Protocol} under the \e{MIT} license is
now documented.
\endlist
\section2 Qt WebEngine Module
- \l Chromium and third-party components bundled with it were updated to
+ \e Chromium and third-party components bundled with it were updated to
version 69.0.3497.
\section1 Qt 5.11.2
\section2 Qt Core Module
- \l{PCRE2} got updated to upstream version 10.31.
+ \l{pcre2}{PCRE2} got updated to upstream version 10.31.
\section2 Qt GUI Module
\list
- \li The copyright information for \l{HarfBuzz} got updated.
+ \li The copyright information for \l{harfbuzz}{HarfBuzz} got updated.
\li The copyright information for
- \l{Anti-aliasing rasterizer from FreeType 2} got updated.
+ \l{grayraster}{Anti-aliasing rasterizer from FreeType 2} got updated.
\endlist
\section2 Qt Location Module
The copyright information and description of
- \l{Clipper Polygon Clipping Library} got updated.
+ \l{clipper}{Clipper Polygon Clipping Library} got updated.
\section2 Qt SQL Module
- \l{SQLite} got updated to upstream version 3.24.0.
+ \l{sqlite}{SQLite} got updated to upstream version 3.24.0.
\section2 Qt WebEngine Module
@@ -297,7 +332,7 @@
\li The \l{WebEngine StyleSheet Browser Example}, \l{WebEngine Widgets Simple Browser Example},
\l{WebEngine Quick Nano Browser}, and \l{WebEngine Cookie Browser Example}
use images from the Tango Icon Library. This is now documented.
- \li \l{Marked (WebEngine RecipeBrowser example)} got updated to upstream
+ \li \l{recipebrowser-marked}{Marked (WebEngine RecipeBrowser example)} got updated to upstream
version 0.4.0.
\endlist
@@ -305,26 +340,26 @@
\section2 Qt 3D Module
- The use of the \e{Jet Propulsion Laboratory Photojournal} in
+ The use of the \e{nasa-jpl}{Jet Propulsion Laboratory Photojournal} in
the module is actually limited to the planets-qml example. The attribution
has therefore been removed from the module's documentation.
\section2 Qt Documentation
- Use of the \l{Titillium Web Font} in the Coffee demo is now documented.
+ Use of the \l{coffeeexample-titillium}{Titillium Web Font} in the Coffee demo is now documented.
\section2 Qt Image Formats
- \l{WebP (libwebp)} got updated to version 1.0.0.
+ \l{libwebp}{WebP (libwebp)} got updated to version 1.0.0.
\section1 Qt 5.11.0
\section2 Qt 3D Module
\list
- \li The \l{Open Asset Import Library} got updated to upstream version
+ \li The \l{assimp}{Open Asset Import Library} got updated to upstream version
4.1.0.
- \li Examples use some assets from \l{Substance Share} that are available
+ \li Examples use some assets from \l{substance_share}{Substance Share} that are available
under the \e {Creative Commons Attribution 4.0} license. This is now
documented.
\endlist
@@ -335,16 +370,16 @@
\li \e{Parts of QTemporaryFile} got removed from documentation.
The corresponding code got removed already in Qt 5.10.0.
- \li The copy of the \l{The Public Suffix List} got updated on
+ \li The copy of the \l{psl}{The Public Suffix List} got updated on
2018-01-04.
\li The concluded license for the
- \l{Unicode Common Locale Data Repository (CLDR)} changed to
+ \l{unicode-cldr}{Unicode Common Locale Data Repository (CLDR)} changed to
\e{Unicode License Agreement - Data Files and Software (2016)}.
In Qt 5.10 documentation, the component was labelled as
\e{Unicode CLDR (Unicode Common Locale Data Repository)}.
- \li The use of the \l{Unicode Character Database (UCD)} under the
+ \li The use of the \l{unicode-character-database}{Unicode Character Database (UCD)} under the
\e{Unicode License Agreement - Data Files and Software (2016)}.
is now documented.
\endlist
@@ -358,36 +393,36 @@
\section2 Qt GUI Module
\list
- \li \l{HarfBuzz-NG} got updated to upstream version 1.7.4.
- \li \l{LibJPEG-turbo} got updated to upstream version 1.5.3.
+ \li \l{harfbuzz-ng}{HarfBuzz-NG} got updated to upstream version 1.7.4.
+ \li \l{libjpeg}{LibJPEG-turbo} got updated to upstream version 1.5.3.
\endlist
\section2 Qt Image Formats
\list
- \li \l{TIFF Software Distribution (libtiff)} got updated to upstream
+ \li \l{libtiff}{TIFF Software Distribution (libtiff)} got updated to upstream
version 4.0.9.
- \li \l{WebP (libwebp)} got updated to upstream version 0.6.1.
+ \li \l{libwebp}{WebP (libwebp)} got updated to upstream version 0.6.1.
\endlist
\section2 Qt Quick Controls 2 Module
- Use of \l{Shadow values from Angular Material} under \e{MIT License}
+ Use of \l{shadow_angular_material}{Shadow values from Angular Material} under \e{MIT License}
in the Material Style is now documented.
\section2 Qt SQL Module
- \l{SQLite} got updated to upstream version 3.23.1.
+ \l{sqlite}{SQLite} got updated to upstream version 3.23.1.
\section2 Qt Test Module
- The concluded license of \l{Linux Performance Events} changed to
+ The concluded license of \l{linuxperf}{Linux Performance Events} changed to
\e{GNU General Public License v2.0 only with Linux Syscall Note}.
\section2 Qt WebEngine Module
\list
- \li \l{(Components of) Bazel} got added under the
+ \li \e{(Components of) Bazel} got added under the
\e {Apache License 2.0}.
\li \l{Breakpad, An open-source multi-platform crash reporting system}
got added under a \e{New BSD, Apple PSL 2.0 and Apache 2.0} license.
@@ -412,7 +447,7 @@
\section2 Qt XML Patterns Module
- Use of \l{XML Schema}
+ Use of \l{xml-xsd}{XML Schema}
under \e{W3C Software Notice and Document License (2015-05-13)}
is now documented.
*/
diff --git a/doc/src/platforms/android-building.qdoc b/doc/src/platforms/android-building.qdoc
index 66b8218e1..de1f6684b 100644
--- a/doc/src/platforms/android-building.qdoc
+++ b/doc/src/platforms/android-building.qdoc
@@ -118,11 +118,12 @@
-android-ndk <path/to/ndk> -android-sdk <path/to/sdk> -no-warnings-are-errors
\endcode
- You also need to provide the \c{-android-arch} parameter which is necessary to specify the
- Android architecture, such as armeabi-v71 (default), arm64-v8a, x86, or x86_64:
+ You may provide the \c{-android-abis} parameter to limit the
+ Android ABIs targeted, such as armeabi-v7a, arm64-v8a, x86, or x86_64:
\code
- -android-arch armeabi-v71
+ -android-abis armeabi-v7a,arm64-v8a
\endcode
+ If the parameter is not specified, Qt is built for all supported ABIs.
\li To build the parts of Qt you have now configured run the following command. \e{nproc} is
optional, representing the number of parallel jobs your system can do.
diff --git a/doc/src/platforms/android-platform-notes.qdoc b/doc/src/platforms/android-platform-notes.qdoc
index 8780a11a9..ee3e237b9 100644
--- a/doc/src/platforms/android-platform-notes.qdoc
+++ b/doc/src/platforms/android-platform-notes.qdoc
@@ -61,59 +61,38 @@
\section1 Application Package
- On Android, apps are distributed in packages called \e APK. Qt Creator
- builds the \e APK for you, but if you for some reason want to do this
- manually, you must first make sure that the appropriate packaging and build
- files are in place. For more detailed information about how the packaging
- is done, see \l{Deploying an Application on Android}.
+ On Android, apps are distributed to devices in packages called \e APK.
+
+ For distributing apps in Google Play, a different format called AAB is used
+ instead.
- \section1 Deployment
-
- Qt Creator currently supports three methods of deployment for Android apps: the default
- deployment method is suitable for distribution of the APK file. With this deployment method,
- the necessary Qt libraries and files will be copied into your project directory, and bundled
- as part of the APK, so that you get a stand-alone, distributable application package.
-
- \section2 Deployment with Ministro
- The second method is suitable if you want to minimize the size of your APK, and can be selected by
- opening the \b Run settings of your project, expanding \b{Deploy Configurations} and removing the
- tick from the \b{Use local Qt libraries} check box. In this case, your application will have an
- external dependency called \b{Ministro}. If a user downloads your application, and it is the first
- application on their device to depend on Ministro, they will be asked to install it before they can
- run your application. Ministro downloads Qt libraries from a repository of your choice. The
- repository URL can be set by editing the file \e{android/res/values/libs.xml} which is created by Qt
- Creator when configuring your project. Ministro will then serve as a central repository for Qt
- libraries, and several apps can share the libraries to limit the amount of duplication. Note that
- using this deployment method requires a repository for the libraries you want to distribute.
-
- \section2 Deployment for Debugging
- The third method is more convenient when you are simply testing your application on a device
- physically connected to your development machine (or an emulator). It will copy the Qt libraries
- into a temporary directory on your device and run the application against these instead. An APK
- built in this way is not distributable, since it relies on the device being prepared to contain
- the Qt libraries in the correct location. However, since the Qt libraries are only copied into
- the device once, it benefits from a faster turn-around time, so it's more suited for testing
- changes to your application during development. This deployment method can be selected by
- opening the \b Run settings of your project, expanding \b{Deploy Configurations} and choosing
- \b{Deploy local Qt libraries}. Make sure the \b{Use local Qt libraries} check box is also ticked.
+ Although Qt Creator supports building both these package formats for you, you could
+ also build them manually when needed. To do so, ensure that the necessary packages
+ and build files are in place. For more detailed information about how the packaging
+ is done, see \l{Deploying an Application on Android}.
\section1 Plugins and Imports Special Considerations
- If an application uses plugins or imports that depend on other modules, these modules have to
+ If an application uses plugins that depend on other modules, these modules must
be listed in the application's dependencies. This is because Qt Creator does not know ahead
- of time which imports or plugins your application will end up loading.
+ of time which plugins your application will end up loading.
- For example, if your application's QML code imports \l{Qt Multimedia}, then the Qt Multimedia module
- must explicitly be made a dependency of the application. You can do this by adding it to the
- application .pro file:
+ For example, if a plugin depends on \l{Qt Multimedia}, then the Qt Multimedia module
+ must explicitly be made a dependency of the application, otherwise the plugin cannot be
+ loaded. You can do this by adding it to the application's \c .pro file:
\code
QT += multimedia
\endcode
- It is also possible to manually enable dependencies on Qt libraries by opening the
- \gui Run settings of your project, expanding \gui{Package configurations} and selecting the
- \gui Libraries tab. Manually check the libraries that are dependencies of your project.
+ The automatic deployment tool detects any dependencies on QML modules that are imported
+ from the application's code, but in special case (for instance when QML code is generated
+ by the C++ code), this is not possible. If this generated code imports any special
+ QML modules, they are not detected by the deployment tool and therefore will
+ not be included in the application bundle.
+
+ In these cases, you must add "dummy" QML code importing the same modules as the generated
+ code, so that the automated tool detects the dependencies.
\section1 Text Special Considerations
@@ -129,20 +108,6 @@
\section1 OpenGL Special Considerations
- There are some special considerations to be made when OpenGL is used. The platform plugin only
- supports full screen top-level OpenGL windows. This means that even dialogs and popups will be
- shown as full screen. There may also be drawing errors if you try to stack windows that have
- animations or otherwise require updating their UI while they are obscured by another window.
-
- It is recommended that you try to avoid multiple top-level windows in the case of Android apps, as
- there is no traditional window system on this platform.
-
- \note Embedding a QGLWidget inside a widget hierarchy is not supported. When QGLWidget is in use,
- it must be the top-level widget.
-
- \note Avoid using the legacy QGLWidget. For embedding OpenGL or Qt Quick content into a
- widget-based user interface, prefer using QOpenGLWidget and QQuickWidget.
-
Modern devices often support OpenGL ES 3.0 or 3.1 in addition to 2.0. To get a suitable OpenGL
context, set the requested version via QSurfaceFormat::setVersion(). Note however that the
header files are only available in recent API levels, for example to include gl31.h, you need to
@@ -169,14 +134,20 @@
\section1 Supported Architectures
- Qt for Android currently has binaries for ARMv7 and x86. Make sure you select the
- correct architecture for the device or emulator you are targeting, otherwise your application
- will crash. The MIPS archictecture is currently not supported by Qt.
+ Qt for Android currently has binaries for armv7a, arm64-v8a, x86 and x86-64.
+
+ If you want to support several different ABIs in your application, the recommendation is
+ to build an Application App Bundle (AAB) containing binaries for each of the ABIs. Based on this,
+ Google Play generates optimized Application Packages (APK) for the device issuing the download
+ request.
- If you want to support several different architectures in your application, the recommendation is
- to build separate APKs for each architecture, so that each APK only contains the binaries required
- for the targeted architecture. For more information about this, see the Android documentation
- about \l{http://developer.android.com/google/play/publishing/multiple-apks.html}{Multiple APK Support}.
+ The Application App Bundle is generated by Qt Creator, if the corresponding checkbox for this
+ is selected in the project settings. It can also be built from the command line by using the
+ "aab" Makefile target.
+
+ \code
+ % make aab
+ \endcode
\section1 Known Issues
diff --git a/doc/src/platforms/android.qdoc b/doc/src/platforms/android.qdoc
index c33aeae3c..0f107017f 100644
--- a/doc/src/platforms/android.qdoc
+++ b/doc/src/platforms/android.qdoc
@@ -60,7 +60,7 @@ The following list summarizes what you can do with Qt for Android:
\l{Qt Android Extras}.
\li Develop secure applications using OpenSSL library.
\li Create \l{Android Services}
- \li Create and deploy Application Package (APK) using Qt Creator.
+ \li Create and deploy Application Package using Qt Creator.
\endlist
The following topics provide more details about how to use Qt for Android:
@@ -135,8 +135,9 @@ The following topics provide more details about how to use Qt for Android:
And that's it: Provided that the path referenced in the \c{project.properties} file is located
under the \c{Android Package Source Directory}, the deployment tool will copy it into the
- packaging directory and perform the necessary steps to include it in your \c{APK}. You can
- now add Java code to your application which accesses the APIs provided by the library project.
+ packaging directory and perform the necessary steps to include it in your \c{APK} or \c{AAB}.
+ You can now add Java code to your application which accesses the APIs provided by the library
+ project.
*/
diff --git a/doc/src/platforms/configure-linux-device.qdoc b/doc/src/platforms/configure-linux-device.qdoc
index 201e22ac5..06955f882 100644
--- a/doc/src/platforms/configure-linux-device.qdoc
+++ b/doc/src/platforms/configure-linux-device.qdoc
@@ -28,7 +28,7 @@
/*!
\page configure-linux-device.html
\title Configure an Embedded Linux Device
- \brief Provides information about how to configure an embedded Linux device in Qt.
+ \brief Provides information about how to configure an Embedded Linux device in Qt.
Building Qt for a given device requires a toolchain and a \c sysroot. Additionally, some
devices require vendor-specific adaptation code for EGL and OpenGL ES 2.0 support. This is
diff --git a/doc/src/platforms/emb-fonts.qdoc b/doc/src/platforms/emb-fonts.qdoc
index d2d961236..e2cd0249a 100644
--- a/doc/src/platforms/emb-fonts.qdoc
+++ b/doc/src/platforms/emb-fonts.qdoc
@@ -102,16 +102,6 @@
is designed to be mapped directly to memory. The same format is used to
share glyphs from non-prerendered fonts between applications.
- \target QPF
- \section1 Legacy Qt Prerendered Font (QPF)
-
- Qt provides support for the legacy QPF format for compatibility
- reasons. QPF is based on the internal font engine data structure of Qt/Embedded
- versions 2 and 3.
-
- Note that the file name describes the font, for example \c helvetica_120_50.qpf
- is 12 point Helvetica while \c helvetica_120_50i.qpf is 12 point Helvetica \e italic.
-
\omit
\section1 Memory Requirements
diff --git a/doc/src/platforms/emb-linux.qdoc b/doc/src/platforms/emb-linux.qdoc
index 19816f85c..586079f05 100644
--- a/doc/src/platforms/emb-linux.qdoc
+++ b/doc/src/platforms/emb-linux.qdoc
@@ -318,238 +318,6 @@
set the \c{QT_QPA_FB_FORCE_FULLSCREEN} environment variable to \c 0 to
restore the behavior from earlier Qt versions.
- \section1 Input
-
- When no windowing system is present, the mouse, keyboard, and touch input are
- read directly via \c evdev or using helper libraries such as \c libinput or
- \c tslib. Note that this requires that device nodes \c {/dev/input/event*} are
- readable by the user. \c eglfs and \c linuxfb have all the input handling code
- compiled-in.
-
- \section2 Using libinput
-
- \l{http://www.freedesktop.org/wiki/Software/libinput}{libinput} is a library
- to handle input devices. It offers an alternative to the Qt's own \c evdev
- input support. To enable using \c libinput, make sure the development files
- for \c libudev and \c libinput are available when configuring and building
- Qt. \c xkbcommon is also necessary if keyboard support is desired. With
- \c eglfs and \c linuxfb no further actions are necessary as these plugins use
- \c libinput by default. If \c libinput support is not available or the
- environment variable \c QT_QPA_EGLFS_NO_LIBINPUT is set, Qt's own evdev
- handlers come in to play.
-
- \section2 Input on eglfs and linuxfb without libinput
-
- Parameters like the device node name can be set in the environment variables
- \c QT_QPA_EVDEV_MOUSE_PARAMETERS, \c QT_QPA_EVDEV_KEYBOARD_PARAMETERS and
- \c QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS. Separate the entries with colons. These
- parameters act as an alternative to passing the settings in the \c{-plugin}
- command-line argument, and with some backends they are essential: eglfs and
- linuxfb use built-in input handlers so there is no separate \c {-plugin}
- argument in use.
-
- Additionally, the built-in input handlers can be disabled by setting
- \c QT_QPA_EGLFS_DISABLE_INPUT or \c QT_QPA_FB_DISABLE_INPUT to \c 1.
-
- \section2 Mouse
-
- The mouse cursor shows up whenever \c QT_QPA_EGLFS_HIDECURSOR (for eglfs)
- or \c QT_QPA_FB_HIDECURSOR (for linuxfb) is not set and Qt's libudev-based
- device discovery reports that at least one mouse is available. When \c libudev
- support is not present, the mouse cursor always show up unless explicitly
- disabled via the environment variable.
-
- Hot plugging is supported, but only if Qt was configured with \c libudev support
- (that is, if the \e libudev development headers are present in the sysroot at
- configure time). This allows connecting or disconnecting an input device while
- the application is running.
-
- The \e evdev mouse handler supports the following extra parameters:
-
- \list
-
- \li \c {/dev/input/...} - Specifies the name of the input device. When not
- given, Qt looks for a suitable device either via \e libudev or by walking
- through the available nodes.
-
- \li \c nocompress - By default, input events that do not lead to changing the
- position compared to the last Qt mouse event are compressed; a new Qt mouse
- event is sent only after a change in the position or button state. This can
- be disabled by setting the \c nocompress parameter.
-
- \li \c dejitter - Specifies a jitter limit. By default dejittering is disabled.
-
- \li \c grab - When 1, Qt will grab the device for exclusive use.
-
- \li \c abs - Some touchscreens report absolute coordinates and cannot be
- differentiated from touchpads. In this special situation pass \c abs to
- indicate that the device is using absolute events.
-
- \endlist
-
- \section2 Keyboard
-
- The \e evdev keyboard handler supports the following extra parameters:
-
- \list
-
- \li \c {/dev/input/...} - Specifies the name of the input device. When not
- given, Qt looks for a suitable device either via \e libudev or by walking
- through the available nodes.
- \li \c {grab} - Enables grabbing the input device.
- \li \c {keymap} - Specifies the name of a custom keyboard map file.
- \li \c {enable-compose} - Enables compositing.
- \li \c {repeat-delay} - Sets a custom key repeat delay.
- \li \c {repeat-rate} - Sets a custom key repeat rate.
- \endlist
-
- On Embedded Linux systems that do not have their terminal sessions disabled,
- the behavior on a key press can be confusing as input event is processed by
- the Qt application and the tty. To overcome this, the following options are
- available:
-
- \list
-
- \li \e EGLFS and \e LinuxFB attempt to disable the terminal keyboard on
- application startup by setting the tty's keyboard mode to \c K_OFF. This
- prevents keystrokes from going to the terminal. If the standard behavior needs
- to be restored for some reason, set the environment variable
- \c QT_QPA_ENABLE_TERMINAL_KEYBOARD to \c 1. Note that this works only when the
- application is launched from a remote console (for example, via \c ssh) and
- the terminal keyboard input remains enabled.
-
- \li An alternative approach is to use the \e evdev keyboard handler's \c grab
- parameter by passing \e{grab=1} in \c QT_QPA_EVDEV_KEYBOARD_PARAMETERS. This
- results in trying to get a grab on the input device. If the \c grab is
- successful, no other components in the system receive events from it as long as
- the Qt application is running. This approach is more suitable for applications
- started remotely as it does not need access to the tty device.
-
- \li Finally, for many specialized Embedded Linux images it does not make sense
- to have the standard terminal sessions enabled in the first place. Refer to
- your build environment's documentation on how to disable them. For example,
- when generating images using the \l {http://www.yoctoproject.org}{Yocto
- Project}, unsetting \c SYSVINIT_ENABLED_GETTYS results in having no
- \c getty process running, and thus no input, on any of the virtual terminals.
-
- \endlist
-
- If the default built-in keymap is not sufficient, a different one can be
- specified either via the \c keymap parameter or by using the eglfs-specific
- \l{QEglFSFunctions::loadKeymap()}{loadKeymap()} function. The latter allows
- switching the keymap at runtime. Note however that this requires using eglfs'
- built-in keyboard handler; it is not supported when the keyboard handler is
- loaded via the \c -plugin command-line parameter.
-
- \note Special system key combinations, such as console switching
- (\e{Ctrl+Alt+Fx}) or zap (\e{Ctrl+Alt+Backspace}) are not currently supported
- and are ignored.
-
- To generate a custom keymap, the \e kmap2qmap utility can be used. This can be
- found in the \e qttools module. The source files have to be in standard Linux
- \c kmap format, which is understood by the kernel's \c loadkeys command.
- This means one can use the following sources to generate \c qmap files:
-
- \list
- \li The \l {http://lct.sourceforge.net/}{Linux Console Tools (LCT)} project.
- \li \l {http://www.x.org/}{Xorg} X11 keymaps can be converted to the
- \c kmap format with the \c ckbcomp utility.
- \li As \c kmap files are plain-text files, they can also be hand crafted.
- \endlist
-
- \c kmap2qmap is a command line program, that needs at least 2 files as
- parameters. The last one is the generated \c .qmap file, while all the
- others are parsed as input \c .kmap files. For example:
-
- \badcode
- kmap2qmap i386/qwertz/de-latin1-nodeadkeys.kmap include/compose.latin1.inc de-latin1-nodeadkeys.qmap
- \endcode
-
- \note \c kmap2qmap does not support all the (pseudo) symbols that the Linux
- kernel supports. When converting a standard keymap, a number of warnings will
- be shown regarding \c Show_Registers, \c Hex_A, and so on; these messages can
- safely be ignored.
-
- \section2 Touch
-
- For some resistive, single-touch touch screens it may be necessary to fall
- back to using \c tslib instead of relying on the Linux multi-touch protocol and
- the event devices. For modern touch screens this is not necessary. \c tslib
- support can be enabled by setting the environment variable
- \c QT_QPA_EGLFS_TSLIB or \c QT_QPA_FB_TSLIB to 1. To change the device, set the
- environment variable \c TSLIB_TSDEVICE or pass the device name on the
- command-line. Note that the \c tslib input handler generates mouse events and
- supports single touch only, as opposed to \c evdevtouch which generates true
- multi-touch QTouchEvent events too.
-
- The \e evdev touch handler supports the following extra parameters:
-
- \list
-
- \li \c {/dev/input/...} - Specifies the name of the input device. When not
- given, Qt looks for a suitable device either via \e libudev or by walking
- through the available nodes.
-
- \li \c rotate - On some touch screens the coordinates must be rotated, which
- is done by setting \c rotate to 90, 180, or 270.
-
- \li \c invertx and \c inverty - To invert the X or Y coordinates in the input
- events, pass \c invertx or \c inverty.
-
- \endlist
-
- For example, doing \c{export
- QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event5:rotate=180} before
- launching applications results in an explicitly specified touch device and
- flipping the coordinates - useful when the orientation of the actual
- screen and the touch screen do not match.
-
- \section2 Pen-based tablets
-
- The \c evdevtablet plugin provides basic support for Wacom and similar,
- pen-based tablets. It generates QTabletEvent events only. To enable it,
- pass \c {QT_QPA_GENERIC_PLUGINS=evdevtablet} in the environment or,
- alternatively, pass \c {-plugin evdevtablet} argument on the command-line.
- The plugin can take a device node parameter, for example
- \c{QT_QPA_GENERIC_PLUGINS=evdevtablet:/dev/event1}, in case the Qt's automatic
- device discovery (based either on \e libudev or a walkthrough of
- \c{/dev/input/event*}) is not functional or misbehaving.
-
- \section2 Debugging Input Devices
-
- It is possible to print some information to the debug output by enabling
- the \c qt.qpa.input logging rule, for example by setting the \c QT_LOGGING_RULES
- environment variable to \c{qt.qpa.input=true}. This is useful for detecting
- which device is being used, or to troubleshoot device discovery issues.
-
- \section2 Using Custom Mouse Cursor Images
-
- \c eglfs comes with its own set of 32x32 sized mouse cursor images. If these are
- not sufficient, a custom cursor atlas can be provided by setting the \c
- QT_QPA_EGLFS_CURSOR environment variable to the name of a JSON file. The file
- can also be embedded into the application via Qt's resource system.
-
- For example, an embedded cursor atlas with 8 cursor images per row can be
- specified like the following:
-
- \badcode
- {
- "image": ":/cursor-atlas.png",
- "cursorsPerRow": 8,
- "hotSpots": [
- [7, 2],
- [12, 3],
- [12, 12],
- ...
- ]
- }
- \endcode
-
- Note that the images are expected to be tightly packed in the atlas: the
- width and height of the cursors are decided based on the total image size and
- the \c cursorsPerRow setting. Atlases have to provide an image for all the
- supported cursors.
-
\section1 Display Output
When having multiple displays connected, the level of support for targeting
@@ -1050,15 +818,12 @@
For more details, see \l{Wayland and Qt}.
- \note You may experience issues with touch screen input while using the
- \l{http://wayland.freedesktop.org/}{Weston} reference compositor. For more
- information, see \l{https://wiki.qt.io/WestonTouchScreenIssues}.
-
\section1 Related Topics
\list
\li \l{Qt for Device Creation}
\li \l{Configure an Embedded Linux Device}
+ \li \l{Inputs on an Embedded Linux Device}
\li \l Emulator
\li \l{Qt Virtual Keyboard}
\li \l{Qt Quick WebGL}
diff --git a/doc/src/platforms/inputs-linux-device.qdoc b/doc/src/platforms/inputs-linux-device.qdoc
new file mode 100644
index 000000000..9cb85dcee
--- /dev/null
+++ b/doc/src/platforms/inputs-linux-device.qdoc
@@ -0,0 +1,267 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page inputs-linux-device.html
+ \title Inputs on an Embedded Linux Device
+ \brief Provides information about working with inputs on an Embedded Linux device in Qt.
+
+ On your Embedded Linux device, when there's no windowing system present, the mouse, keyboard,
+ and touch input are read directly via \c evdev or using helper libraries such as \c libinput or
+ \c tslib. However, this behavior requires that device nodes \c {/dev/input/event*} are readable
+ by the user. \c eglfs and \c linuxfb have all the input handling code compiled-in.
+
+ \section2 Use libinput
+
+ \l{libinput} is a library to handle input devices that offers an alternative to the Qt's own
+ \c evdev input support. To enable using \c libinput, when you configure and build Qt, make sure
+ that the development files for \c libudev and \c libinput are available. If you require keyboard
+ support, then \c xkbcommon is also necessary. With \c eglfs and \c linuxfb, no further actions
+ are necessary as these plugins use \c libinput by default. If \c libinput support is not
+ available or the \c QT_QPA_EGLFS_NO_LIBINPUT environment variable is set, then Qt's own \c evdev
+ handlers are used instead.
+
+ \section2 Input on eglfs and linuxfb without libinput
+
+ Parameters like the device node name can be set in the \c QT_QPA_EVDEV_MOUSE_PARAMETERS,
+ \c QT_QPA_EVDEV_KEYBOARD_PARAMETERS and \c QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS environment
+ variables; separate your entries with colons. These parameters are an alternative to passing
+ the settings in the \c{-plugin} command-line argument, and with some backends they are essential.
+ But \c eglfs and \c linuxfb use built-in input handlers so there's no separate \c {-plugin}
+ argument in use.
+
+ Additionally, the built-in input handlers can be disabled by setting
+ \c QT_QPA_EGLFS_DISABLE_INPUT (for \c eglfs) or \c QT_QPA_FB_DISABLE_INPUT (for \c linuxfb) to
+ \c 1.
+
+ \section2 Mouse
+
+ The mouse cursor shows up whenever \c QT_QPA_EGLFS_HIDECURSOR (for \c eglfs) or
+ \c QT_QPA_FB_HIDECURSOR (for \c linuxfb) isn't set and Qt's libudev-based device discovery
+ reports that at least one mouse is available. When \c libudev support is not present, the mouse
+ cursor is always displayed; unless it's explicitly disabled via the environment variable.
+
+ If Qt was configured with \c libudev support, connecting or disconnecting an input device while
+ the application is running (hot plugging) is supported. Then \c libudev development headers
+ are present in the sysroot at configure time.
+
+ The \c evdev mouse handler supports the following extra parameters:
+
+ \table
+ \header
+ \li Parameter
+ \li Description
+ \row
+ \li \c {/dev/input/...}
+ \li Specifies the name of the input device. If unspecified, Qt looks for a suitable device
+ either via \c libudev or by traversing the available nodes.
+ \row
+ \li \c nocompress
+ \li By default, input events that don't lead to changing the position compared to the last
+ Qt mouse event are compressed. A new Qt mouse event is sent only after a change in the
+ position or button state. To disable this behavior, set the \c nocompress parameter.
+ \row
+ \li \c dejitter
+ \li Specifies a jitter limit; disabled by default.
+ \row
+ \li \c grab
+ \li When set to \c 1, Qt grabs the device for exclusive use.
+ \row
+ \li \c abs
+ \li Some touchscreens report absolute coordinates and can't be differentiated from touchpads.
+ In this case, pass \c abs to indicate that the device is using absolute events.
+ \endtable
+
+ \section2 Keyboard
+
+ The \c evdev keyboard handler supports the following extra parameters:
+
+ \table
+ \header
+ \li Parameter
+ \li Description
+ \row
+ \li \c {/dev/input/...}
+ \li Specifies the name of the input device. If unspecified, Qt looks for a suitable device
+ either via \c libudev or by traversing the available nodes.
+ \row
+ \li \c {grab}
+ \li Enables grabbing the input device.
+ \row
+ \li \c {keymap}
+ \li Specifies the name of a custom keyboard map file.
+ \row
+ \li \c {enable-compose}
+ \li Enables compositing.
+ \row
+ \li \c {repeat-delay}
+ \li Sets a custom key repeat delay.
+ \row
+ \li \c {repeat-rate}
+ \li Sets a custom key repeat rate.
+ \endtable
+
+ On Embedded Linux systems that don't have their terminal sessions disabled, the behavior on a
+ key press can be confusing, as the input event is processed by the Qt application and the tty.
+ To overcome this, the following options are available:
+
+ \list
+ \li On application startup, \c EGLFS and \c LinuxFB attempt to disable the terminal keyboard
+ by setting the tty's keyboard mode to \c K_OFF. This prevents keystrokes from being sent to
+ the terminal. If the standard behavior is required, set the \c QT_QPA_ENABLE_TERMINAL_KEYBOARD
+ environment variable to \c 1. Note that this works only when the application is launched
+ from a remote console, via \c ssh for example, and the terminal keyboard input remains
+ enabled.
+ \li An alternative approach is to use the \c evdev keyboard handler's \c grab parameter by
+ passing \c{grab=1} in \c QT_QPA_EVDEV_KEYBOARD_PARAMETERS. This results in trying to get a
+ grab on the input device. If the \c grab is successful, no other components in the system
+ receive events from it, as long as the Qt application is running. This approach is more
+ suitable for applications that start remotely as it doesn't need access to the tty device.
+ \li Finally, for many specialized Embedded Linux images it doesn't make sense to have the
+ standard terminal sessions enabled in the first place. For more details on how to disable
+ these terminal sessions, refer to your build environment's Documentation. For example, when
+ generating images using the \l{Yocto Project}, unsetting \c SYSVINIT_ENABLED_GETTYS results
+ in having no \c getty process running. This means, there's no input on any of the virtual
+ terminals.
+ \endlist
+
+ If the default built-in keymap is not sufficient, you can specify a different one either via the
+ \c keymap parameter or via the eglfs-specific \l{QEglFSFunctions::loadKeymap()}{loadKeymap()}
+ function. The latter allows for switching the keymap at runtime. However, this behavior requires
+ using eglfs' built-in keyboard handler; it is not supported when the keyboard handler is
+ loaded via the \c -plugin command-line parameter.
+
+ \note Special system key combinations, such as console switching (\uicontrol{Ctrl+Alt+Fx}) or
+ zap (\uicontrol{Ctrl+Alt+Backspace}) are not currently supported and are ignored.
+
+ To generate a custom keymap, use the \c kmap2qmap utility, that can be found in the \c qttools
+ module. The source files have to be in standard Linux \c kmap format, which is understood by the
+ kernel's \c loadkeys command. \c qmap files can be generated in one of the following ways:
+
+ \list
+ \li The \l{Linux Console Tools (LCT)} project.
+ \li \l{X.org} X11 keymaps can be converted to the \c kmap format with the \c ckbcomp utility.
+ \li As \c kmap files are plain-text files, they can also be hand crafted.
+ \endlist
+
+ \c kmap2qmap is a command line program, that needs at least 2 files as parameters. The last
+ parameter is the generated \c .qmap file, while all the others are parsed as input \c .kmap
+ files. For example:
+
+ \badcode
+ kmap2qmap i386/qwertz/de-latin1-nodeadkeys.kmap include/compose.latin1.inc de-latin1-nodeadkeys.qmap
+ \endcode
+
+ \note \c kmap2qmap doesn't support all the (pseudo) symbols that the Linux kernel supports.
+ Consequently, when you convert a standard keymap, there'll be a number of warnings regarding
+ \c Show_Registers, \c Hex_A, and so on; these messages can be ignored.
+
+ \section2 Touch
+
+ While it's not necessary for modern touch screens, some resistive, single-touch touch screens may
+ require that you fallback to using \c tslib instead of relying on the Linux multi-touch protocol
+ and the event devices.
+
+ To enable \c tslib support, set the \c QT_QPA_EGLFS_TSLIB (for \c eglfs) or \c QT_QPA_FB_TSLIB
+ (for \c linuxfb) environment variable to 1. To change the device, set the \c TSLIB_TSDEVICE
+ environment variable or pass the device name on the command-line. Note that the \c tslib input
+ handler generates mouse events and supports single touch only, as opposed to \c evdevtouch which
+ generates true multi-touch QTouchEvent events too.
+
+ The \c evdev touch handler supports the following extra parameters:
+
+ \table
+ \header
+ \li Parameter
+ \li Description
+ \row
+ \li \c {/dev/input/...}
+ \li Specifies the name of the input device. If unspecified, Qt looks for a suitable device
+ either via \c libudev or by traversing the available nodes.
+ \row
+ \li \c rotate
+ \li On some touch screens the coordinates must be rotated by setting \c rotate to 90, 180,
+ or 270.
+ \row
+ \li \c invertx and \c inverty
+ \li Specifies the parameters to invert the X or Y coordinates in the input events.
+ \endtable
+
+ For example, if you pass the following values to \c QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS before
+ launching applications, you'd have an explicitly specified touch device with the coordinates
+ flipped. This is useful when the orientation of the actual screen and the touch screen don't
+ match.
+
+ \badcode
+ export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event5:rotate=180
+ \endcode
+
+ \section2 Pen-based Tablets
+
+ The \c evdevtablet plugin provides basic support for Wacom and similar pen-based tablets. It
+ generates QTabletEvent events only. To enable it, pass \c {QT_QPA_GENERIC_PLUGINS=evdevtablet}
+ in the environment or, alternatively, pass the \c {-plugin evdevtablet} argument on the
+ command-line.
+
+ The plugin can take a device node parameter, such as \c{QT_QPA_GENERIC_PLUGINS=evdevtablet:/dev/event1},
+ if Qt's automatic device discovery (based either on \c libudev or traversing \c{/dev/input/event*})
+ isn't functional or is misbehaving.
+
+ \section2 Debug Input Devices
+
+ It's possible to print some information to the debug output by enabling the \c qt.qpa.input
+ logging rule, for example by setting the \c QT_LOGGING_RULES environment variable to
+ \c{qt.qpa.input=true}. This is useful for detecting which device is being used, or for
+ troubleshooting device discovery issues.
+
+ \section2 Use Custom Mouse Cursor Images
+
+ \c eglfs comes with its own set of 32x32-sized mouse cursor images. If these are insufficient,
+ you can provide a custom cursor atlas by setting the \c QT_QPA_EGLFS_CURSOR environment variable
+ to the name of a JSON file. This file can also be embedded into the application via
+ \l{The Qt Resource System}.
+
+ For example, an embedded cursor atlas with 8 cursor images per row can be specified as follows:
+
+ \badcode
+ {
+ "image": ":/cursor-atlas.png",
+ "cursorsPerRow": 8,
+ "hotSpots": [
+ [7, 2],
+ [12, 3],
+ [12, 12],
+ ...
+ ]
+ }
+ \endcode
+
+ Note that the images are expected to be tightly packed in the atlas; the width and height of the
+ cursors are determined based on the total image size and the \c cursorsPerRow setting. Atlases
+ must also provide an image for all of the supported cursors.
+
+*/
diff --git a/doc/src/platforms/macos.qdoc b/doc/src/platforms/macos.qdoc
index 0a3ae32dc..7342d0343 100644
--- a/doc/src/platforms/macos.qdoc
+++ b/doc/src/platforms/macos.qdoc
@@ -211,6 +211,15 @@
\li \l{Qt for macOS - Deployment}
\endlist
+ \note For selling applications in the macOS App Store, special rules apply.
+ In order to pass validation, the application must verify the existence of
+ a valid receipt before executing any code. Since this is a copy protection
+ mechanism, steps should be taken to avoid common patterns and obfuscate the
+ code that validates the receipt as much as possible. Thus, this cannot be
+ automated by Qt, but requires some platform-specific code written
+ specifically for the application itself. More information can be found in
+ \l{https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateLocally.html}{Apple's documentation}.
+
\section1 \macos Issues
The page below covers specific issues and recommendations for creating
diff --git a/doc/src/platforms/supported-platforms.qdoc b/doc/src/platforms/supported-platforms.qdoc
index b2e6cffd4..1f6b91721 100644
--- a/doc/src/platforms/supported-platforms.qdoc
+++ b/doc/src/platforms/supported-platforms.qdoc
@@ -110,7 +110,7 @@
\list
\li \l{Deploying Qt Applications}
\list
- \li \l{Platform and Compiler Notes - Android#Deployment}{Android}
+ \li \l{Qt Creator: Deploying Applications to Android Devices}{Android}
\li \l{Qt for iOS}{iOS}
\li \l{Qt for Linux/X11 - Deployment}{Linux/X11}
\li \l{Qt for macOS - Deployment}{\macos}
diff --git a/doc/src/platforms/supported-platforms.qdocinc b/doc/src/platforms/supported-platforms.qdocinc
index 28ff7548c..83e9964d0 100644
--- a/doc/src/platforms/supported-platforms.qdocinc
+++ b/doc/src/platforms/supported-platforms.qdocinc
@@ -62,13 +62,10 @@
//! [macos]
\table 80%
\header \li Target Platform \li Architecture \li Build Environment
- \row \li \macos 10.12, 10.13, \b 10.14
+ \row \li \macos 10.13, 10.14, \b 10.15
\li \c x86_64 and \c x86_64h
- \li \b {Xcode 10} (10.14 SDK), Xcode 9\raisedaster (10.13 SDK)
+ \li \b {Xcode 11} (10.15 SDK)
\endtable
- \br
- \b{Note:} Xcode 9 is only supported for application development (to be able to opt out
- of features such as layer-backing and dark mode), not for development of Qt itself.
//! [macos]
\section2 \l{Qt for Windows}{Windows}
@@ -112,17 +109,17 @@
//! [ios]
\table 80%
\header \li Target Platform \li Architecture \li Build Environment \li Notes
- \row \li iOS 11, \b{iOS 12}
+ \row \li iOS 12, \b{iOS 13}
\li \c armv8 (\c arm64)
- \li \b {Xcode 10} (iOS 12 SDK)
+ \li \b {Xcode 11} (iOS 13 SDK)
\li
- \row \li tvOS 11, \b{tvOS 12}
+ \row \li tvOS 12, \b{tvOS 13}
\li \c armv8 (\c arm64)
- \li \b {Xcode 10} (tvOS 12 SDK)
+ \li \b {Xcode 11} (tvOS 13 SDK)
\li Technology Preview
- \row \li watchOS 4, \b{watchOS 5}
+ \row \li watchOS 5, \b{watchOS 6}
\li \c armv7k
- \li \b {Xcode 10} (watchOS 5 SDK)
+ \li \b {Xcode 11} (watchOS 6 SDK)
\li Technology Preview. No UI.
\endtable
//! [ios]
diff --git a/doc/src/platforms/windows.qdoc b/doc/src/platforms/windows.qdoc
index 8e92e6ce3..75d5842ce 100644
--- a/doc/src/platforms/windows.qdoc
+++ b/doc/src/platforms/windows.qdoc
@@ -204,7 +204,7 @@
To explicitly enable the use of ICU in Qt Core, pass \c -icu to \c configure:
- \code
+ \badcode
configure -icu
\endcode
@@ -235,14 +235,14 @@
use OpenGL, pass the command line options \c{-opengl desktop} to the
configure script.
- \code
+ \badcode
configure -opengl desktop
\endcode
To use an OpenGL ES 2.0 emulator instead of ANGLE, use the configure
options: \c{-opengl es2 -no-angle}.
- \code
+ \badcode
configure -opengl es2 -no-angle
\endcode
@@ -252,7 +252,7 @@
and loading the OpenGL implementation at runtime. To use this
mode, pass \c{-opengl dynamic} to the configure script.
- \code
+ \badcode
configure -opengl dynamic
\endcode
@@ -433,7 +433,7 @@
(\l{http://www.activestate.com/activeperl}{download page}) and add
the installation location to your \c PATH.
\li Python - Install Python from the \l{http://www.python.org/download/}{here}
- and add the installation location to your PATH.
+ and add the installation location to your \c PATH.
\endlist
\note Please make sure that the \c perl executable from ActivePerl is found
@@ -587,7 +587,7 @@
\title Qt for Windows - Deployment
This documentation describes deployment process for \l{Qt for
- Windows}{Windows}. We refer to the \l{Plug & Paint Example}{plug & paint}
+ Windows}{Windows}. We refer to the \l{Plug & Paint Example}{Plug & Paint}
example application through out the document to demonstrate the deployment
process.
@@ -967,9 +967,9 @@
executable with your application and ensure that it is executed when the
user installs your application.
- They are named \c vcredist_x64.exe (IA64 and 64-bit) or
+ They are named \c vcredist_x64.exe (64-bit) or
\c vcredist_x86.exe (32-bit) and can be found in the folder
- c{Visual Studio install path>/VC/redist/<language-code>}.
+ \c{<Visual Studio install path>/VC/redist/<language-code>}.
Alternatively, they can be downloaded from the web, for example
\l{https://www.microsoft.com/download/details.aspx?id=48145}
@@ -1141,12 +1141,12 @@
to \c cmd.exe.
Assuming the file is called \c{qt5vars.cmd}
- and the Qt folder is called \c qt-5 and located under \c C:\qt:
+ and the Qt folder is called \c Qt-5 and located under \c C:\Qt:
- \code
- REM Set up \Microsoft Visual Studio 2017, where <arch> is \c amd64, \c x86, etc.
+ \badcode
+ REM Set up Microsoft Visual Studio 2017, where <arch> is amd64, x86, etc.
CALL "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvarsall.bat" <arch>
- SET _ROOT=C:\qt\qt-5
+ SET _ROOT=C:\Qt\Qt-5
SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH%
REM Uncomment the below line when using a git checkout of the source repository
REM SET PATH=%_ROOT%\qtrepotools\bin;%PATH%
@@ -1154,8 +1154,8 @@
\endcode
A desktop link can then be created by specifying the command
- \c{%SystemRoot%\system32\cmd.exe /E:ON /V:ON /k c:\qt\qt5vars.cmd}
- as application and \c{c:\qt\qt-5} as working directory.
+ \c{%SystemRoot%\system32\cmd.exe /E:ON /V:ON /k C:\Qt\qt5vars.cmd}
+ as application and \c{C:\Qt\Qt-5} as working directory.
\note Setups for MinGW are similar; they differ
only in that the \c bin folder of the installation should be added to the
@@ -1176,7 +1176,7 @@
To configure the Qt library for a debug build for your machine, type
the following command in the command prompt:
- \code
+ \badcode
configure -debug -nomake examples -nomake tests -skip qtwebengine -opensource
\endcode
@@ -1185,19 +1185,19 @@
To build Qt using \l{jom}, type:
- \code
+ \badcode
jom
\endcode
If you do not have \l{jom} installed, type:
- \code
+ \badcode
nmake
\endcode
For MinGW, type:
- \code
+ \badcode
mingw32-make
\endcode
@@ -1219,7 +1219,7 @@
For the Qt reference documentation to be available in \l {Qt Assistant},
you must build it separately:
- \code
+ \badcode
nmake docs
\endcode
*/
diff --git a/doc/src/qmlapp/performance.qdoc b/doc/src/qmlapp/performance.qdoc
index 919527706..19bb0c9e3 100644
--- a/doc/src/qmlapp/performance.qdoc
+++ b/doc/src/qmlapp/performance.qdoc
@@ -80,52 +80,6 @@ such as those done to the bindings compiler, it can (in some use-cases) be faste
than calling a C++ function. However, care must be taken to ensure that unnecessary
processing isn't triggered accidentally.
-\section2 Bindings
-
-There are two types of bindings in QML: optimized and non-optimized bindings.
-It is a good idea to keep binding expressions as simple as possible, since the
-QML engine makes use of an optimized binding expression evaluator which can
-evaluate simple binding expressions without needing to switch into a full
-JavaScript execution environment. These optimized bindings are evaluated far
-more efficiently than more complex (non-optimized) bindings. The basic
-requirement for optimization of bindings is that the type information of every
-symbol accessed must be known at compile time.
-
-Things to avoid in binding expressions to maximize optimizability:
-\list
- \li declaring intermediate JavaScript variables
- \li accessing "var" properties
- \li calling JavaScript functions
- \li constructing closures or defining functions within the binding expression
- \li accessing properties outside of the immediate evaluation scope
- \li writing to other properties as side effects
-\endlist
-
-Bindings are quickest when they know the type of objects and properties they are working
-with. This means that non-final property lookup in a binding expression can be slower
-in some cases, where it is possible that the type of the property being looked up has
-been changed (for example, by a derived type).
-
-The immediate evaluation scope can be summarized by saying that it contains:
-\list
- \li the properties of the expression scope object (for binding expressions, this is
- the object to which the property binding belongs)
- \li ids of any objects in the component
- \li the properties of the root item in the component
-\endlist
-
-Ids of objects from other components and properties of any such objects, as
-well as symbols defined in or included from a JavaScript import, are not in the
-immediate evaluation scope, and thus bindings which access any of those things
-will not be optimized.
-
-Note that if a binding cannot be optimized by the QML engine's optimized binding
-expression evaluator, and thus must be evaluated by the full JavaScript environment,
-some of the tips listed above will no longer apply. For example, it can sometimes be
-beneficial to cache the result of property resolution in an intermediate JavaScript
-variable in a very complex binding. Upcoming sections have more information on these
-sorts of optimizations.
-
\section2 Type-Conversion
One major cost of using JavaScript is that in most cases when a property from a QML
diff --git a/doc/src/qtmodules.qdoc b/doc/src/qtmodules.qdoc
index 169055338..adc2f2eae 100644
--- a/doc/src/qtmodules.qdoc
+++ b/doc/src/qtmodules.qdoc
@@ -252,6 +252,11 @@
\li Provides a specialized set of controls that can be used to build
interfaces in Qt Quick.
\row
+ \li \l[Qt Quick Timeline]{Qt Quick Timeline}
+ \li All
+ \li All (*)
+ \li Enables keyframe-based animations and parameterization.
+ \row
\li \l{Qt Quick Widgets C++ Classes}{Qt Quick Widgets}
\li All
\li All (*)
@@ -444,6 +449,10 @@
\li \l{Qt Lottie Animation} (Technology Preview)
\li A QML API for rendering graphics and animations in JSON format,
exported by the \l Bodymovin plugin for AdobeĀ® After Effects.
+ \row
+ \li \l[QtQuick3D]{Qt Quick 3D} (Technology Preview)
+ \li Qt Quick 3D provides a high-level API for creating 3D content or UIs based on
+ Qt Quick.
\endtable
\section1 Qt Tools
diff --git a/doc/src/snippets/code/doc_src_appicon.qdoc b/doc/src/snippets/code/doc_src_appicon.qdoc
index c57d2aa33..4d09e048f 100644
--- a/doc/src/snippets/code/doc_src_appicon.qdoc
+++ b/doc/src/snippets/code/doc_src_appicon.qdoc
@@ -49,7 +49,7 @@
****************************************************************************/
//! [0]
-IDI_ICON1 ICON DISCARDABLE "myappico.ico"
+IDI_ICON1 ICON "myappico.ico"
//! [0]
diff --git a/doc/src/source-breaks.qdoc b/doc/src/source-breaks.qdoc
index 5f4595503..95cea3d2e 100644
--- a/doc/src/source-breaks.qdoc
+++ b/doc/src/source-breaks.qdoc
@@ -503,7 +503,7 @@ recommendations for handling those changes.
\section2 Changes to QTouchEvent
\list
- \li \l{QTouchEvent::DeviceType} and \l{QTouchEvent::deviceType()} are deprecated
+ \li \c{QTouchEvent::DeviceType} and \c{QTouchEvent::deviceType()} are deprecated
as \l{QTouchDevice} provides a better way to identify and access the
device from which the events originate.
\li The constructor now takes a \l{QTouchDevice} pointer instead of \c{DeviceType} value.
diff --git a/examples/demos/photosurface/resources/photosurface.rc b/examples/demos/photosurface/resources/photosurface.rc
index 3267bd033..f752e082d 100644
--- a/examples/demos/photosurface/resources/photosurface.rc
+++ b/examples/demos/photosurface/resources/photosurface.rc
@@ -1,6 +1,6 @@
#include "winver.h"
-IDI_ICON1 ICON DISCARDABLE "photosurface.ico"
+IDI_ICON1 ICON "photosurface.ico"
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,0