Merge remote-tracking branch 'origin/11.0' into qds/dev

Conflicts:
 src/plugins/qmldesigner/CMakeLists.txt
 src/plugins/qmldesignerbase/CMakeLists.txt
 src/plugins/qmlprojectmanager/CMakeLists.txt
Change-Id: If706ae3fe7a7d0e17036ce6285bec772d1f6127d
This commit is contained in:
Tim Jenssen
2023-07-04 17:31:14 +02:00
191 changed files with 68408 additions and 55791 deletions

View File

@@ -6,7 +6,7 @@ instructions:
- type: Group - type: Group
instructions: instructions:
- type: ExecuteCommand - type: ExecuteCommand
command: "curl --fail -L --retry 5 --retry-delay 5 -o {{.AgentWorkingDir}}/build/qt_temp/elfutils-release_0.175qt-linux-x86_64.7z http://master.qt.io/development_releases/prebuilt/elfutils/elfutils-release_0.175qt-linux-x86_64.7z" command: "curl --fail -L --retry 5 --retry-delay 5 -o {{.AgentWorkingDir}}/build/qt_temp/elfutils-release_0.175qt-linux-x86_64.7z https://master.qt.io/development_releases/prebuilt/elfutils/elfutils-release_0.175qt-linux-x86_64.7z"
maxTimeInSeconds: 3600 maxTimeInSeconds: 3600
maxTimeBetweenOutput: 360 maxTimeBetweenOutput: 360
userMessageOnFailure: "Failed to download elfutils package, check logs." userMessageOnFailure: "Failed to download elfutils package, check logs."
@@ -82,7 +82,7 @@ instructions:
- type: Group - type: Group
instructions: instructions:
- type: ExecuteCommand - type: ExecuteCommand
command: "curl --fail -L --retry 5 --retry-delay 5 -o {{.AgentWorkingDir}}\\build\\qt_temp\\elfutils-release_0.175qt-windows-x86_64.7z http://master.qt.io/development_releases/prebuilt/elfutils/elfutils-release_0.175qt-windows-x86_64.7z" command: "curl --fail -L --retry 5 --retry-delay 5 -o {{.AgentWorkingDir}}\\build\\qt_temp\\elfutils-release_0.175qt-windows-x86_64.7z https://master.qt.io/development_releases/prebuilt/elfutils/elfutils-release_0.175qt-windows-x86_64.7z"
maxTimeInSeconds: 3600 maxTimeInSeconds: 3600
maxTimeBetweenOutput: 360 maxTimeBetweenOutput: 360
userMessageOnFailure: "Failed to download elfutils package, check logs." userMessageOnFailure: "Failed to download elfutils package, check logs."
@@ -92,7 +92,7 @@ instructions:
maxTimeBetweenOutput: 360 maxTimeBetweenOutput: 360
userMessageOnFailure: "Failed to extract elfutils package, check logs." userMessageOnFailure: "Failed to extract elfutils package, check logs."
- type: ExecuteCommand - type: ExecuteCommand
command: "curl --fail -L --retry 5 --retry-delay 5 -o {{.AgentWorkingDir}}\\build\\qt_temp\\Python38-win-x64.7z http://master.qt.io/development_releases/prebuilt/python/Python38-win-x64.7z" command: "curl --fail -L --retry 5 --retry-delay 5 -o {{.AgentWorkingDir}}\\build\\qt_temp\\Python38-win-x64.7z https://master.qt.io/development_releases/prebuilt/python/Python38-win-x64.7z"
maxTimeInSeconds: 3600 maxTimeInSeconds: 3600
maxTimeBetweenOutput: 360 maxTimeBetweenOutput: 360
userMessageOnFailure: "Failed to download python package, check logs." userMessageOnFailure: "Failed to download python package, check logs."
@@ -141,7 +141,7 @@ instructions:
maxTimeBetweenOutput: 360 maxTimeBetweenOutput: 360
userMessageOnFailure: "Failed to create folder qt_temp, check logs." userMessageOnFailure: "Failed to create folder qt_temp, check logs."
- type: ExecuteCommand - type: ExecuteCommand
command: "curl --fail -L --retry 5 --retry-delay 5 -o {{.AgentWorkingDir}}\\build\\qt_temp\\Python38-win-x86.7z http://master.qt.io/development_releases/prebuilt/python/Python38-win-x86.7z" command: "curl --fail -L --retry 5 --retry-delay 5 -o {{.AgentWorkingDir}}\\build\\qt_temp\\Python38-win-x86.7z https://master.qt.io/development_releases/prebuilt/python/Python38-win-x86.7z"
maxTimeInSeconds: 3600 maxTimeInSeconds: 3600
maxTimeBetweenOutput: 360 maxTimeBetweenOutput: 360
userMessageOnFailure: "Failed to download python package, check logs." userMessageOnFailure: "Failed to download python package, check logs."

View File

@@ -7,10 +7,10 @@ instructions:
variableValue: "RelWithDebInfo" variableValue: "RelWithDebInfo"
- type: EnvironmentVariable - type: EnvironmentVariable
variableName: LLVM_BASE_URL variableName: LLVM_BASE_URL
variableValue: http://master.qt.io/development_releases/prebuilt/libclang/libclang-release_16.0.2-based variableValue: https://master.qt.io/development_releases/prebuilt/libclang/libclang-release_16.0.2-based
- type: EnvironmentVariable - type: EnvironmentVariable
variableName: QTC_QT_BASE_URL variableName: QTC_QT_BASE_URL
variableValue: "http://ci-files02-hki.intra.qt.io/packages/jenkins/archive/qt/6.5/6.5.1-released/Qt" variableValue: "https://ci-files02-hki.ci.qt.io/packages/jenkins/archive/qt/6.5/6.5.1-released/Qt"
- type: EnvironmentVariable - type: EnvironmentVariable
variableName: QTC_QT_MODULES variableName: QTC_QT_MODULES
variableValue: "qt5compat qtbase qtdeclarative qtimageformats qtquick3d qtquickcontrols2 qtquicktimeline qtserialport qtshadertools qtsvg qttools qttranslations qtwebengine" variableValue: "qt5compat qtbase qtdeclarative qtimageformats qtquick3d qtquickcontrols2 qtquicktimeline qtserialport qtshadertools qtsvg qttools qttranslations qtwebengine"
@@ -22,7 +22,7 @@ instructions:
variableValue: 10.14 variableValue: 10.14
- type: EnvironmentVariable - type: EnvironmentVariable
variableName: QTC_SDKTOOL_QT_BASE_URL variableName: QTC_SDKTOOL_QT_BASE_URL
variableValue: "http://ci-files02-hki.intra.qt.io/packages/jenkins/archive/qt/5.15/5.15.2-final-released/latest/src/submodules/qtbase-everywhere-src-5.15.2" variableValue: "https://ci-files02-hki.ci.qt.io/packages/jenkins/archive/qt/5.15/5.15.2-final-released/latest/src/submodules/qtbase-everywhere-src-5.15.2"
- type: Group - type: Group
instructions: instructions:
- type: EnvironmentVariable - type: EnvironmentVariable

View File

@@ -52,7 +52,7 @@ instructions:
- type: ChangeDirectory - type: ChangeDirectory
directory: "{{.BuildDir}}/tqtc-qtsdk/packaging_tools" directory: "{{.BuildDir}}/tqtc-qtsdk/packaging_tools"
- type: ExecuteCommand - type: ExecuteCommand
command: "python3 -m pipenv run python -u install_qt.py --qt-path {{.BuildDir}}/qt_install_dir --base-url {{.Env.QTC_QT_BASE_URL}} --base-url-postfix={{.Env.QTC_QT_POSTFIX}} --icu7z http://master.qt.io/development_releases/prebuilt/icu/prebuilt/56.1/icu-linux-g++-Rhel7.2-x64.7z {{.Env.QTC_QT_MODULES}}" command: "python3 -m pipenv run python -u install_qt.py --qt-path {{.BuildDir}}/qt_install_dir --base-url {{.Env.QTC_QT_BASE_URL}} --base-url-postfix={{.Env.QTC_QT_POSTFIX}} --icu7z https://master.qt.io/development_releases/prebuilt/icu/prebuilt/56.1/icu-linux-g++-Rhel7.2-x64.7z {{.Env.QTC_QT_MODULES}}"
executeCommandArgumentSplitingBehavior: SplitAfterVariableSubstitution executeCommandArgumentSplitingBehavior: SplitAfterVariableSubstitution
maxTimeInSeconds: 3600 maxTimeInSeconds: 3600
maxTimeBetweenOutput: 360 maxTimeBetweenOutput: 360
@@ -72,7 +72,7 @@ instructions:
property: host.os property: host.os
equals_value: MacOS equals_value: MacOS
- type: ExecuteCommand - type: ExecuteCommand
command: "python -m pipenv run python -u install_qt.py --qt-path {{.BuildDir}}/qt_install_dir --base-url {{.Env.QTC_QT_BASE_URL}} --base-url-postfix={{.Env.QTC_QT_POSTFIX}} --opengl32sw7z http://master.qt.io/development_releases/prebuilt/llvmpipe/windows/opengl32sw-64.7z --d3dcompiler7z http://master.qt.io/development_releases/prebuilt/d3dcompiler/msvc2013/d3dcompiler_47-x64.7z --openssl7z http://ci-files02-hki.intra.qt.io/packages/jenkins/openssl/openssl_1.1.1d_prebuild_x64.7z {{.Env.QTC_QT_MODULES}}" command: "python -m pipenv run python -u install_qt.py --qt-path {{.BuildDir}}/qt_install_dir --base-url {{.Env.QTC_QT_BASE_URL}} --base-url-postfix={{.Env.QTC_QT_POSTFIX}} --opengl32sw7z https://master.qt.io/development_releases/prebuilt/llvmpipe/windows/opengl32sw-64.7z --d3dcompiler7z https://master.qt.io/development_releases/prebuilt/d3dcompiler/msvc2013/d3dcompiler_47-x64.7z --openssl7z https://ci-files02-hki.ci.qt.io/packages/jenkins/openssl/openssl_1.1.1d_prebuild_x64.7z {{.Env.QTC_QT_MODULES}}"
executeCommandArgumentSplitingBehavior: SplitAfterVariableSubstitution executeCommandArgumentSplitingBehavior: SplitAfterVariableSubstitution
maxTimeInSeconds: 3600 maxTimeInSeconds: 3600
maxTimeBetweenOutput: 360 maxTimeBetweenOutput: 360

View File

@@ -118,7 +118,7 @@ Editing
* Fixed that generated functions did not have a `const` qualifier when * Fixed that generated functions did not have a `const` qualifier when
required required
([QTCREATORBUG-29274](https://bugreports.qt.io/browse/QTCREATORBUG-29274)) ([QTCREATORBUG-29274](https://bugreports.qt.io/browse/QTCREATORBUG-29274))
* Fixed that locator showed both the declaration and the definition of symbols * Fixed that the locator showed both the declaration and the definition of symbols
([QTCREATORBUG-13894](https://bugreports.qt.io/browse/QTCREATORBUG-13894)) ([QTCREATORBUG-13894](https://bugreports.qt.io/browse/QTCREATORBUG-13894))
* Fixed the handling of C++20 keywords and concepts * Fixed the handling of C++20 keywords and concepts
* Clangd * Clangd
@@ -154,8 +154,9 @@ Editing
### Python ### Python
* Added the option to create a virtual environment (`venv`) to the Python * Added the `Create Virtual Environment` option to the Python interpreter
interpreter selector and the wizard selector on the editor toolbar and to the wizards in `File > New Project >
> Application (Qt for Python)`
([PYSIDE-2152](https://bugreports.qt.io/browse/PYSIDE-2152)) ([PYSIDE-2152](https://bugreports.qt.io/browse/PYSIDE-2152))
* Fixed that too many progress indicators could be created * Fixed that too many progress indicators could be created
([QTCREATORBUG-29224](https://bugreports.qt.io/browse/QTCREATORBUG-29224)) ([QTCREATORBUG-29224](https://bugreports.qt.io/browse/QTCREATORBUG-29224))
@@ -167,10 +168,11 @@ Projects
* Made it possible to add devices in `Preferences > Devices > Add` without going * Made it possible to add devices in `Preferences > Devices > Add` without going
through the wizard through the wizard
([Documentation](https://doc.qt.io/qtcreator/creator-developing-b2qt.html))
([Documentation](https://doc.qt.io/qtcreator/creator-developing-generic-linux.html))
* Added support for moving files to a different directory when renaming them in * Added support for moving files to a different directory when renaming them in
the `File System` view the `File System` view
([QTCREATORBUG-15981](https://bugreports.qt.io/browse/QTCREATORBUG-15981)) ([QTCREATORBUG-15981](https://bugreports.qt.io/browse/QTCREATORBUG-15981))
([Documentation](https://doc.qt.io/qtcreator/creator-file-system-view.html)) ([Documentation](https://doc.qt.io/qtcreator/creator-file-system-view.html))
### CMake ### CMake
@@ -184,10 +186,13 @@ Projects
[QTCREATORBUG-28904](https://bugreports.qt.io/browse/QTCREATORBUG-28904), [QTCREATORBUG-28904](https://bugreports.qt.io/browse/QTCREATORBUG-28904),
[QTCREATORBUG-28985](https://bugreports.qt.io/browse/QTCREATORBUG-28985), [QTCREATORBUG-28985](https://bugreports.qt.io/browse/QTCREATORBUG-28985),
[QTCREATORBUG-29006](https://bugreports.qt.io/browse/QTCREATORBUG-29006)) [QTCREATORBUG-29006](https://bugreports.qt.io/browse/QTCREATORBUG-29006))
([Documentation](https://doc.qt.io/qtcreator/creator-project-cmake.html))
* Added `Build > Reload CMake Presets` to reload CMake presets after making * Added `Build > Reload CMake Presets` to reload CMake presets after making
changes to them changes to them
* Added support for `block()` and `endblock()` ([Documentation](https://doc-snapshots.qt.io/qtcreator-11.0/creator-build-settings-cmake-presets.html))
* Fixed that CMake Presets were not visible in `Projects` view * Added support for the `block()` and `endblock()` CMake commands
([CMake documentation](https://cmake.org/cmake/help/latest/command/block.html#command:block))
* Fixed that CMake Presets were not visible in the `Projects` view
([QTCREATORBUG-28966](https://bugreports.qt.io/browse/QTCREATORBUG-28966)) ([QTCREATORBUG-28966](https://bugreports.qt.io/browse/QTCREATORBUG-28966))
* Fixed issues with detecting a configured Qt version when importing a build * Fixed issues with detecting a configured Qt version when importing a build
([QTCREATORBUG-29075](https://bugreports.qt.io/browse/QTCREATORBUG-29075)) ([QTCREATORBUG-29075](https://bugreports.qt.io/browse/QTCREATORBUG-29075))
@@ -196,6 +201,7 @@ Projects
* Added an option for selecting the interpreter to the wizards in * Added an option for selecting the interpreter to the wizards in
`File > New Project > Application (Qt for Python)` `File > New Project > Application (Qt for Python)`
([Documentation](https://doc.qt.io/qtcreator/creator-project-creating.html))
Debugging Debugging
--------- ---------
@@ -203,6 +209,7 @@ Debugging
* Improved the UI for enabling and disabling debuggers in `Projects > Run > * Improved the UI for enabling and disabling debuggers in `Projects > Run >
Debugger settings` Debugger settings`
([QTCREATORBUG-28627](https://bugreports.qt.io/browse/QTCREATORBUG-28627)) ([QTCREATORBUG-28627](https://bugreports.qt.io/browse/QTCREATORBUG-28627))
([Documentation](https://doc.qt.io/qtcreator/creator-debugging-qml.html))
* Fixed the automatic source mapping for Qt versions from an installer * Fixed the automatic source mapping for Qt versions from an installer
([QTCREATORBUG-28950](https://bugreports.qt.io/browse/QTCREATORBUG-28950)) ([QTCREATORBUG-28950](https://bugreports.qt.io/browse/QTCREATORBUG-28950))
* Fixed pretty printer for `std::string` for recent `libc++` * Fixed pretty printer for `std::string` for recent `libc++`
@@ -210,8 +217,8 @@ Debugging
### C++ ### C++
* Added an option for the default number of array elements to show * Added the `Default array size` option for setting the default number of array
(`Preferences > Debugger > Locals & Expressions > Default array size`) elements to show in `Preferences > Debugger > Locals & Expressions`
* Fixed debugging in a terminal as the root user * Fixed debugging in a terminal as the root user
([QTCREATORBUG-27519](https://bugreports.qt.io/browse/QTCREATORBUG-27519)) ([QTCREATORBUG-27519](https://bugreports.qt.io/browse/QTCREATORBUG-27519))
* CDB * CDB
@@ -225,11 +232,12 @@ Debugging
### Qt Quick ### Qt Quick
* Improved the auto-detection if QML debugging is required * Improved the auto-detection of whether QML debugging is required
([QTCREATORBUG-28627](https://bugreports.qt.io/browse/QTCREATORBUG-28627)) ([QTCREATORBUG-28627](https://bugreports.qt.io/browse/QTCREATORBUG-28627))
* Added an option for disabling static analyzer messages to * Added the `Use customized static analyzer` option for disabling static analyzer
`Qt Quick > QML/JS Editing` messages to `Preferences > Qt Quick > QML/JS Editing`
([QTCREATORBUG-29095](https://bugreports.qt.io/browse/QTCREATORBUG-29095)) ([QTCREATORBUG-29095](https://bugreports.qt.io/browse/QTCREATORBUG-29095))
([Documentation](https://doc.qt.io/qtcreator/creator-checking-code-syntax.html))
Analyzer Analyzer
-------- --------

View File

@@ -70,4 +70,9 @@ macro.see = "\\sa"
macro.function = "\\fn" macro.function = "\\fn"
navigation.landingpage = "$IDE_DISPLAY_NAME Manual" navigation.landingpage = "$IDE_DISPLAY_NAME Manual"
# Auto-generate navigation linking based on "All Topics":
navigation.toctitles = "All Topics"
navigation.toctitles.inclusive = false
buildversion = "$IDE_DISPLAY_NAME Manual $QTC_VERSION" buildversion = "$IDE_DISPLAY_NAME Manual $QTC_VERSION"

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -1,3 +1,7 @@
{HTML.extraimages,qhp.QtCreator.extraFiles} += \ {HTML.extraimages,qhp.QtCreator.extraFiles} += \
images/commercial.png \ images/commercial.png \
images/5OiIqFTjUZI.jpg images/5OiIqFTjUZI.jpg \
images/EhJ1eV_6RH8.jpg \
images/FTSvDmcAgPI.jpg \
images/hOx3dod5-1A.jpg \
images/LnVjI0I7cKs.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -781,6 +781,10 @@
the display text might do something wrong. You can step through the code and the display text might do something wrong. You can step through the code and
examine changes to the variable to find out where the error occurs. examine changes to the variable to find out where the error occurs.
The following video shows how to examine variable values:
\youtube EhJ1eV_6RH8
\section1 Showing Tooltips for Simple Values \section1 Showing Tooltips for Simple Values
To display the value of a simple variable, hover the mouse pointer over its To display the value of a simple variable, hover the mouse pointer over its
@@ -842,6 +846,11 @@
extensions. It uses this deeper understanding to present objects of such extensions. It uses this deeper understanding to present objects of such
classes in a useful way. classes in a useful way.
To change the number of array elements that are
requested when expanding entries, select \uicontrol Edit >
\uicontrol Preferences > \uicontrol {Debugger} >
\uicontrol {Locals & Expressions} > \uicontrol {Default array size}.
\section1 Stepping Through Code \section1 Stepping Through Code
The following table summarizes the functions that you can use to step through The following table summarizes the functions that you can use to step through
@@ -984,7 +993,7 @@
> \uicontrol {Debugger} > \uicontrol {Locals & Expressions} > > \uicontrol {Debugger} > \uicontrol {Locals & Expressions} >
\uicontrol {Use Debugging Helpers}. \uicontrol {Use Debugging Helpers}.
\image qtcreator-debugging-helper-options.png "Locals & Expressions preferences" \image qtcreator-debugging-helper-options.webp {Locals & Expressions preferences}
In the \uicontrol Locals view, expand the object's entry and open the slot In the \uicontrol Locals view, expand the object's entry and open the slot
in the \e slots subitem. The view shows the objects connected to this slot in the \e slots subitem. The view shows the objects connected to this slot
@@ -1365,7 +1374,7 @@
\uicontrol Debugger > \uicontrol GDB > \uicontrol {Load system GDB pretty \uicontrol Debugger > \uicontrol GDB > \uicontrol {Load system GDB pretty
printers}. For more information, see \l{Specifying GDB Settings}. printers}. For more information, see \l{Specifying GDB Settings}.
\image qtcreator-gdb-options.png "GDB preferences" \image qtcreator-gdb-options.png {GDB preferences}
\section2 Customizing Built-In Debugging Helpers \section2 Customizing Built-In Debugging Helpers
@@ -1375,7 +1384,7 @@
\uicontrol Debugger > \uicontrol {Locals & Expressions}, and enter the \uicontrol Debugger > \uicontrol {Locals & Expressions}, and enter the
commands in the \uicontrol {Debugging Helper Customization} field. commands in the \uicontrol {Debugging Helper Customization} field.
\image qtcreator-debugging-helper-options.png "Locals & Expressions preferences" \image qtcreator-debugging-helper-options.webp {Locals & Expressions preferences}
If you receive error messages about receiving signals when using GDB, you If you receive error messages about receiving signals when using GDB, you
can specify \l{https://sourceware.org/gdb/onlinedocs/gdb/Signals.html} can specify \l{https://sourceware.org/gdb/onlinedocs/gdb/Signals.html}
@@ -1586,7 +1595,7 @@
selecting \uicontrol Edit > \uicontrol Preferences > \uicontrol Debugger > selecting \uicontrol Edit > \uicontrol Preferences > \uicontrol Debugger >
\uicontrol CDB > \uicontrol {Use Python dumper}. \uicontrol CDB > \uicontrol {Use Python dumper}.
\image qtcreator-cdb-options.png "CDB preferences" \image qtcreator-cdb-options.png {CDB preferences}
The following sections describe some of the widely-used Dumper classes and The following sections describe some of the widely-used Dumper classes and
members specified in \c qtcreator\share\qtcreator\debugger\dumper.py. members specified in \c qtcreator\share\qtcreator\debugger\dumper.py.
@@ -2036,7 +2045,7 @@
> \uicontrol Preferences > \uicontrol Debugger > \uicontrol GDB > > \uicontrol Preferences > \uicontrol Debugger > \uicontrol GDB >
\uicontrol {Use automatic symbol cache}. \uicontrol {Use automatic symbol cache}.
\image qtcreator-gdb-options.png "GDB preferences" \image qtcreator-gdb-options.png {GDB preferences}
\section2 Minimizing Number of Breakpoints \section2 Minimizing Number of Breakpoints

View File

@@ -16,15 +16,14 @@
While Linux, \macos, and Windows hosts are supported in principle, Linux is While Linux, \macos, and Windows hosts are supported in principle, Linux is
the recommended platform. the recommended platform.
Currently, only CMake is supported for building applications in the Docker
container.
To build, run, and debug applications on Docker devices, you must install and To build, run, and debug applications on Docker devices, you must install and
configure \c docker-cli on the development host. \QC automatically detects configure \c docker-cli on the development host. \QC automatically detects
\l{Adding Kits}{build and run kit} items, such \l{Adding Debuggers} \l{Adding Kits}{build and run kit} items, such \l{Adding Debuggers}
{debuggers} and \l{Adding Qt Versions}{Qt versions}, in the Docker container {debuggers} and \l{Adding Qt Versions}{Qt versions}, in the Docker container
and creates kits for the devices. and creates kits for the devices.
You can use CMake or qmake to build applications in the Docker container.
To pull images from Docker hub or other registries, use the To pull images from Docker hub or other registries, use the
\l{https://docs.docker.com/engine/reference/commandline/pull/}{docker pull} \l{https://docs.docker.com/engine/reference/commandline/pull/}{docker pull}
command. command.

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2022 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*! /*!
@@ -699,6 +699,19 @@
\endtable \endtable
\section1 Enabling and Disabling Messages
To enable and disable QML and JavaScript messages, select \uicontrol Edit >
\uicontrol Preferences > \uicontrol {Qt Quick} > \uicontrol {QML/JS Editing}
> \uicontrol {Use customized static analyzer}.
\image qtcreator-preferences-qtquick-qmljs-editing.webp {QML/JS Editing tab in Qt Quick preferences}
In \uicontrol Enabled, select the messages that you want to see.
To disable messages for non-Qt Quick UI files, select them in
\uicontrol {Disable messages for non Qt Quick UI}. You cannot
enable messages just for non-Qt Quick UI files.
\section1 Resetting the Code Model \section1 Resetting the Code Model
If you change the build and run kit when you have QML files open in the code If you change the build and run kit when you have QML files open in the code

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2022 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
// ********************************************************************** // **********************************************************************
@@ -11,7 +11,7 @@
\previouspage creator-editor-functions.html \previouspage creator-editor-functions.html
\page creator-coding-navigating.html \page creator-coding-navigating.html
\if defined(qtdesignstudio) \if defined(qtdesignstudio)
\nextpage creator-sidebars.html \nextpage creator-views.html
\else \else
\nextpage creator-highlighting.html \nextpage creator-highlighting.html
\endif \endif
@@ -246,7 +246,12 @@
\endlist \endlist
To view the note, move the mouse pointer over the bookmark or open the To view the note, move the mouse pointer over the bookmark or open the
\uicontrol Bookmarks view in the \l{Working with Sidebars}{sidebar}. \uicontrol Bookmarks view
\if defined(qtcreator)
in the \l{Show and hide sidebars}{sidebar}.
\else
in the \l{Managing Workspaces}{workspace}.
\endif
\section2 Navigating Bookmarks \section2 Navigating Bookmarks
@@ -358,13 +363,11 @@
\QC underlines semantic errors in olive in the C++ code editor. To check the \QC underlines semantic errors in olive in the C++ code editor. To check the
correct paths for includes that are not resolved or that are resolved to the correct paths for includes that are not resolved or that are resolved to the
wrong file, select \uicontrol {Project Parts} > \uicontrol {Header Paths}. wrong file, select \uicontrol {Project Parts} > \uicontrol {Header Paths}.
\endif
\if defined(qtdesignstudio) \else
\section1 Related Topics \section1 Related Topics
\list \list
\li \l{Working with Sidebars}
\li \l{Browsing Project Contents} \li \l{Browsing Project Contents}
\li \l{Viewing Output} \li \l{Viewing Output}
\endlist \endlist

View File

@@ -12,6 +12,13 @@
\l{https://github.com/features/copilot}{GitHub Copilot} into \QC. \l{https://github.com/features/copilot}{GitHub Copilot} into \QC.
You can view suggestions from Copilot in the \uicontrol Edit mode. You can view suggestions from Copilot in the \uicontrol Edit mode.
\note If you enable the Copilot plugin, you must agree with and abide by
the GitHub terms of use. It is your responsibility to know and accept the
requirements and parameters of using Copilot, such as ensuring you have
the rights to grant it access to your code. Also, you must understand the
implications of using it and the suggestions it produces, such as code
copyright and accuracy.
\section1 Requirements \section1 Requirements
To use the Copilot plugin, you need: To use the Copilot plugin, you need:
@@ -42,11 +49,11 @@
\li Select \uicontrol Edit > \uicontrol Preferences > \li Select \uicontrol Edit > \uicontrol Preferences >
\uicontrol Copilot. \uicontrol Copilot.
\image qtcreator-preferences-copilot.webp {Copilot tab in Preferences} \image qtcreator-preferences-copilot.webp {Copilot tab in Preferences}
\li Select the \uicontrol {Enable Copilot} check box to use Copilot.
\li Select \uicontrol {Sign In} to sign into your subscription, activate \li Select \uicontrol {Sign In} to sign into your subscription, activate
your device, and authorize the GitHub Copilot plugin. your device, and authorize the GitHub Copilot plugin.
The button turns into a \uicontrol {Sign Out} button. The button turns into a \uicontrol {Sign Out} button.
\li Select the \uicontrol {Enable Copilot} check box to use Copilot.
\li In the \uicontrol {Node.js path} field, enter the full path to the \li In the \uicontrol {Node.js path} field, enter the full path to the
Node.js executable. Node.js executable.
\li In the \uicontrol {Path to agent.js} field, enter the path to \li In the \uicontrol {Path to agent.js} field, enter the path to
@@ -56,7 +63,7 @@
make changes. make changes.
\endlist \endlist
\section1 Pair-Programming with Copilot \section1 Receiving Suggestions
When you write code in the \l {Working in Edit Mode}{Edit} mode and When you write code in the \l {Working in Edit Mode}{Edit} mode and
\uicontrol {Request completions automatically} is enabled, Copilot \uicontrol {Request completions automatically} is enabled, Copilot
@@ -78,9 +85,11 @@
To apply a suggestion word-by-word, select \uicontrol {Apply Word} To apply a suggestion word-by-word, select \uicontrol {Apply Word}
or press \key {Alt+Right}. or press \key {Alt+Right}.
\section1 Enabling and Disabling Copilot To reject a suggestion, press \key Esc or the arrow keys.
You can enable and disable the Copilot plugin either globally for all \section1 Enabling and Disabling Suggestions
You can enable and disable the Copilot suggestions either globally for all
projects or at project level for a particular project. projects or at project level for a particular project.
To enable or disable Copilot suggestions globally, select the To enable or disable Copilot suggestions globally, select the

View File

@@ -176,7 +176,7 @@
\li Enter the text you are looking for and click \uicontrol Search. \li Enter the text you are looking for and click \uicontrol Search.
\image qtcreator-searchresults.png \image qtcreator-search-results-matches.webp {Found matches in Search Results}
\l {Search Results} shows a list of files that have the searched text. \l {Search Results} shows a list of files that have the searched text.

View File

@@ -0,0 +1,36 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\page creator-how-to-macos.html
\if defined(qtcreator)
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\endif
\ingroup creator-how-to-ui
\ingroup studio-how-to
\title Find menu items on \macos
\QC uses standard names and locations for standard features, such as
\e preferences. In this manual, the names and locations on
Windows and Linux are usually used to keep the instructions short. Here are
some places to check if you cannot find a function, dialog, or keyboard
shortcut on \macos when following the instructions:
\table
\header
\li For
\li Look In
\row
\li \uicontrol Edit > \uicontrol Preferences
\li \uicontrol {\QC} > \uicontrol Preferences
\row
\li \uicontrol Help > \uicontrol {About Plugins}
\li \uicontrol {\QC} > \uicontrol {About Plugins}
\row
\li Keyboard shortcuts
\li \uicontrol {\QC} > \uicontrol Preferences > \uicontrol Environment >
\uicontrol Keyboard
\endtable
*/

View File

@@ -0,0 +1,38 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\page creator-how-to-set-high-dpi-scaling.html
\if defined(qtcreator)
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\endif
\ingroup creator-how-to-ui
\ingroup studio-how-to
\title Set high DPI scaling
The operating systems that \QC supports implement high dots-per-inch (DPI)
scaling at varying levels. Therefore, \QC handles high DPI scaling
differently on different operating systems:
\list
\li On \macos, \QC forces high DPI scaling, which means that it allows
Qt to use the system scaling factor as the \QC scaling factor.
\li On Windows, if you do not set \l{High DPI}
{scaling environment variables}, \QC instructs Qt to detect the
scaling factor and use it as the \QC scaling factor.
\li On Linux, \QC leaves it to the user to enable high DPI scaling
because the process varies so much on different distributions
and windowing systems that it cannot be reliably done automatically.
\endlist
To override the default approach and always enable high DPI scaling:
\list 1
\li Select \uicontrol Edit > \uicontrol Preferences >
\uicontrol Environment > \uicontrol Interface.
\li Select \uicontrol {Enable high DPI scaling}.
\li Restart \QC to have the change take effect.
\endlist
*/

View File

@@ -0,0 +1,26 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\page creator-how-to-switch-ui-themes.html
\if defined(qtcreator)
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\endif
\ingroup creator-how-to-ui
\ingroup studio-how-to
\title Switch UI themes
Themes enable you to change the appearance of the UI from dark to light,
for example.
To switch themes:
\list 1
\li Select \uicontrol Edit > \uicontrol Preferences >
\uicontrol Environment > \uicontrol Interface.
\image qtcreator-preferences-environment-interface.webp {Interface preferences}
\li In \uicontrol Theme, select a theme.
\endlist
*/

View File

@@ -0,0 +1,66 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\page creator-how-to-view-images.html
\if defined(qtcreator)
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\endif
\ingroup creator-how-to-design
\ingroup studio-how-to-image-viewer
\title View images
\QC opens image files in the image viewer.
\image qtcreator-image-viewer.png {Image viewer}
Use the toolbar buttons or \l{Keyboard Shortcuts}{keyboard shortcuts} to:
\list
\li \inlineimage icons/export.png
- Export SVG images to pixmaps or copy an image as a data URL, which
enables you to include it in web pages as if it were an external
resource
\li \inlineimage icons/original-size.png
- Return images to their original size
\li \inlineimage icons/zoom-in.png
- Zoom in and out (\inlineimage icons/zoom-out.png
)
\li \inlineimage icons/run_small.png
- Play and pause animated GIF and MNG images
\li \inlineimage icons/qtcreator-desktopdevice-button.png
- Show and hide the image background
\li \inlineimage icons/switch-outline.png
- Show and hide the image outline
\li \inlineimage icons/fittoview.png
- Fit images to screen
\endlist
Select \uicontrol {Set as Default} to use the current settings for the
background and outline modes and fitting images to screen as default
values for the image viewer.
*/
/*!
\page creator-how-to-export-svg-images.html
\if defined(qtcreator)
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\endif
\ingroup creator-how-to-design
\ingroup studio-how-to-image-viewer
\title Export SVG images
If you have a freely scalable icon in the SVG format, you can open it in the
\l{View images}{image viewer} to export it to several images of different
sizes to create a set of pixmaps.
Select \inlineimage icons/export.png
on the toolbar.
You can then use QIcon::addPixmap() to add the pixmaps to icons in
different modes and states.
*/

View File

@@ -0,0 +1,35 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\page creator-how-to-enable-plugins.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-use
\title Enable and disable plugins
New \QC plugins are often introduced as \e {experimental plugins} to let you
try them out before they are fully supported. Experimental plugins are
disabled by default and you must enable them for them to become visible
after you restart \QC. By default, all the plugins that the plugin depends
on are also enabled.
You can also disable plugins that you do not use, to streamline \QC.
By default, all the plugins that depend on the plugin are also disabled.
To enable and disable plugins:
\list 1
\li Select \uicontrol Help > \uicontrol {About Plugins}.
\li Start typing in the \uicontrol Filter field to find a plugin.
\image qtcreator-installed-plugins.webp {Installed Plugins dialog}
\li Select the \uicontrol Load check box to enable a plugin, or deselect
it to disable a plugin.
\li Select \uicontrol OK.
\li Select \uicontrol {Restart Now} to restart \QC and have the changes
take effect.
\endlist
\sa {Install plugins}{How-to: Install plugins}
*/

View File

@@ -0,0 +1,32 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\page creator-how-to-find-settings-files.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-use
\title Find settings files
\QC creates the following files and directories:
\list
\li QtCreator.db
\li QtCreator.ini
\li qtversion.xml
\li qtcreator
\endlist
The location of the above files and directories depends on the platform:
\list
\li On Linux and other Unix platforms, look in
\c {~/.config/QtProject} and
\c {~/.local/share/data/QtProject/qtcreator}.
\li On \macos, look in \c {~/.config/QtProject} and
\c {~/Library/Application Support/QtProject/Qt Creator}.
\li On Windows, look in
\c {%appdata%\QtProject} and \c {%localappdata%\QtProject}.
\endlist
*/

View File

@@ -0,0 +1,43 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\page creator-how-to-install-plugins.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-use
\title Install plugins
\l{https://marketplace.qt.io/}{Qt Marketplace} has links to \QC plugins that
you can download and install either for free or for a price set by their
publisher. Browse the available plugins in the \uicontrol Marketplace tab
in the \uicontrol Welcome mode.
You can also install plugins from other sources, such as
\l{https://github.com/}{GitHub}.
\note You can install only plugins that your \QC version supports.
To install plugins:
\list 1
\li Select \uicontrol Help > \uicontrol {About Plugins} >
\uicontrol {Install Plugins}.
\li In the \uicontrol Source dialog, enter the path to the archive
or library that has the plugin.
\image qtcreator-install-plugin-source.png
\li In the \uicontrol {Install Location} dialog, select
\uicontrol {User plugins} to make the plugin available for the
current user in all compatible \QC instances or
\uicontrol {\QC installation} to make the plugin available for
all users of a particular \QC instance.
\image qtcreator-install-plugin-location.png
\li In the \uicontrol Summary dialog, select \uicontrol Finish to
install the plugin.
\image qtcreator-install-plugin-summary.png
\li Select \uicontrol {Restart Now} to restart \QC and load the plugin.
\endlist
\sa {Enable and disable plugins}{How-to: Enable and disable plugins}
*/

View File

@@ -12,53 +12,72 @@
\page creator-how-tos.html \page creator-how-tos.html
\nextpage creator-known-issues.html \nextpage creator-known-issues.html
\title How-tos \title How-to
How do I: The following topics describe how to use \QC to perform a particular task.
\section1 Use the UI
\list \list
\li \l {Switch between modes} \li \l {Find a particular preference}
\li \l {Move between open files} \li \l {Find keyboard shortcuts}
\li \l {Switch to Edit mode} \li \l {Find menu items on \macos}
\li \l {Find a specific setting} \li \l {Set high DPI scaling}
\li \l {View output} \li \l {Set the number of recent files shown}
\li \l {Find keyboard shortcuts} \li \l {Show and hide sidebars}
\li \l {Run \QC from the command line} \li \l {Switch between modes}
\li \l {Show and hide sidebars} \li \l {Switch UI themes}
\li \l {Move to symbols} \li \l {View output}
\li \l {Quickly locate files using the keyboard}
\li \l {Perform calculations}
\li \l {Jump to a function in QML code}
\li \l {Add a license header template for C++ code}
\li \l {Paste text from my clipboard history}
\li \l {Sort lines alphabetically}
\li \l {Enclose selected code in curly braces, parentheses, or double quotes}
\li \l {Select the enclosing block in C++}
\li \l {Add my own code snippets to the auto-complete menu}
\li \l {Quickly write down notes somewhere}
\li \l {Configure the amount of recent files shown}
\li \l {Search and replace across files using a regular expression}
\endlist \endlist
\section1 Switch between modes \section1 Edit Code
\QC uses different modes for different purposes. You can quickly \list
switch between these modes with the following keyboard shortcuts: \li \l {Add code snippets to the auto-complete menu}
\li \l {Enclose selected code in curly braces, parentheses, or double quotes}
\li \l {Jump to a function in QML code}
\li \l {Locate files using the keyboard}
\li \l {Move between open files}
\li \l {Move to symbols}
\li \l {Paste text from clipboard history}
\li \l {Perform calculations}
\li \l {Search and replace across files using a regular expression}
\li \l {Select the enclosing block in C++}
\li \l {Sort lines alphabetically}
\li \l {Switch to Edit mode}
\li \l {Write down notes}
\endlist
\section1 Design UIs
\list
\li \l {Export SVG images}
\li \l {View images}
\endlist
\section1 Manage Projects
\list \list
\li \l {Add a license header template for C++ code}
\li \uicontrol Welcome mode \key Ctrl+1
\li \uicontrol Edit mode \key Ctrl+2
\li \uicontrol Design mode \key Ctrl+3
\li \uicontrol Debug mode \key Ctrl+4
\li \uicontrol Projects mode \key Ctrl+5
\li \uicontrol Help mode \key Ctrl+6
\endlist \endlist
For more information about \QC modes, see \l {Selecting Modes}. \section1 Use \QC
\section1 Move between open files \list
\li \l {Enable and disable plugins}
\li \l {Find settings files}
\li \l {Install plugins}
\li \l {Run \QC from the command line}
\endlist
*/
/*!
\page creator-how-to-move-between-open-files.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-edit
\title Move between open files
To quickly move between currently open files, press To quickly move between currently open files, press
\key Ctrl+Tab. \key Ctrl+Tab.
@@ -68,8 +87,15 @@
(\key {Cmd+Opt+Left} on \macos). For example, if you use the \uicontrol Locator (\key {Cmd+Opt+Left} on \macos). For example, if you use the \uicontrol Locator
to jump to a symbol in the same file, you can jump back to your original to jump to a symbol in the same file, you can jump back to your original
location in that file by pressing \key {Alt+Left}. location in that file by pressing \key {Alt+Left}.
*/
\section1 Switch to Edit mode /*!
\page creator-how-to-switch-to-edit-mode.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-edit
\title Switch to Edit mode
To move to the \uicontrol Edit mode and currently active file, press To move to the \uicontrol Edit mode and currently active file, press
\key Esc. \key Esc.
@@ -83,13 +109,29 @@
\li The second press closes secondary windows \li The second press closes secondary windows
\endlist \endlist
*/
\section1 Find a specific setting /*!
\page creator-how-to-find-preferences.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-ui
To find specific settings in \uicontrol Edit > \uicontrol Preferences, \title Find a particular preference
To find a particular preference in \uicontrol Edit > \uicontrol Preferences,
use the filter located at the top left of the \uicontrol Preferences dialog. use the filter located at the top left of the \uicontrol Preferences dialog.
\section1 View output \image qtcreator-preferences.webp {Filtering preferences}
*/
/*!
\page creator-how-to-view-output.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-ui
\title View output
The \l{Viewing Output}{taskbar} shows output from The \l{Viewing Output}{taskbar} shows output from
several sources, such as a list of errors and warnings encountered during several sources, such as a list of errors and warnings encountered during
@@ -113,8 +155,15 @@
\endlist \endlist
For additional ways to view other types of output, see \l{Viewing Output}. For additional ways to view other types of output, see \l{Viewing Output}.
*/
\section1 Find keyboard shortcuts /*!
\page creator-how-to-find-keyboard-shortcuts.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-ui
\title Find keyboard shortcuts
\QC has \l{Keyboard Shortcuts}{many useful keyboard shortcuts}. \QC has \l{Keyboard Shortcuts}{many useful keyboard shortcuts}.
You can see the keyboard shortcut for a menu command in the menu You can see the keyboard shortcut for a menu command in the menu
@@ -124,8 +173,15 @@
\uicontrol Preferences > \uicontrol Environment > \uicontrol Keyboard. \uicontrol Preferences > \uicontrol Environment > \uicontrol Keyboard.
\image qtcreator-keyboard-shortcuts.png "Keyboard preferences" \image qtcreator-keyboard-shortcuts.png "Keyboard preferences"
*/
\section1 Run \QC from the command line /*!
\page creator-how-to-run-from-cli.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-use
\title Run \QC from the command line
You can launch \QC from the command line using the name of an You can launch \QC from the command line using the name of an
existing \l{Managing Sessions}{session} or project file by entering existing \l{Managing Sessions}{session} or project file by entering
@@ -135,23 +191,15 @@
loads the session called \e somesession. loads the session called \e somesession.
For more information, see \l{Using Command Line Options}. For more information, see \l{Using Command Line Options}.
*/
\section1 Show and hide sidebars /*!
\page creator-how-to-move-to-symbols.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-edit
You can toggle the left and right sidebar in some \QC modes. \title Move to symbols
To toggle the left sidebar, click \inlineimage icons/leftsidebaricon.png
(\uicontrol {Hide Left Sidebar/Show Left Sidebar}) or press \key Alt+0
(\key Cmd+0 on \macos).
To toggle the right sidebar, click \inlineimage icons/rightsidebaricon.png
(\uicontrol {Hide Right Sidebar/Show Right Sidebar}) or press
\key Alt+Shift+0 (\key Cmd+Shift+0 on \macos).
For more information on using the sidebars, see
\l {Browsing Project Contents}.
\section1 Move to symbols
To move straight to a symbol used in a project, select the symbol in the To move straight to a symbol used in a project, select the symbol in the
\uicontrol Editor toolbar drop-down menu. For more information on the editor \uicontrol Editor toolbar drop-down menu. For more information on the editor
@@ -166,8 +214,15 @@
the definition or the declaration of the symbol. You can also move the the definition or the declaration of the symbol. You can also move the
cursor on the symbol and press \key {F2}. For more information, see cursor on the symbol and press \key {F2}. For more information, see
\l{Moving to Symbol Definition or Declaration}. \l{Moving to Symbol Definition or Declaration}.
*/
\section1 Quickly locate files using the keyboard /*!
\page creator-how-to-locate-files-using-keyboard.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-edit
\title Locate files using the keyboard
Use the \uicontrol Locator to browse Use the \uicontrol Locator to browse
through projects, files, classes, functions, documentation, and file systems. through projects, files, classes, functions, documentation, and file systems.
@@ -184,8 +239,15 @@
\image qtcreator-locator-customize.webp "Locator preferences" \image qtcreator-locator-customize.webp "Locator preferences"
For more information, see \l{Creating Locator Filters}. For more information, see \l{Creating Locator Filters}.
*/
\section1 Perform calculations /*!
\page creator-how-to-perform-calculations.html
\previouspage creator-how-to-move-between-open-files.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-edit
\title Perform calculations
Open the \uicontrol Locator with \key {Ctrl+K} and type =, followed by a space. Open the \uicontrol Locator with \key {Ctrl+K} and type =, followed by a space.
You can now do basic calculations, with options to copy the results to the clipboard You can now do basic calculations, with options to copy the results to the clipboard
@@ -194,13 +256,27 @@
\image qtcreator-locator.webp "List of locator filters" \image qtcreator-locator.webp "List of locator filters"
For more information, see \l{Executing JavaScript}. For more information, see \l{Executing JavaScript}.
*/
\section1 Jump to a function in QML code /*!
\page creator-how-to-jump-to-functions-in-qml-code.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-edit
\title Jump to a function in QML code
Open the \uicontrol Locator with \key {Ctrl+K} and type m, followed by a space. Open the \uicontrol Locator with \key {Ctrl+K} and type m, followed by a space.
You can now go directly to any QML method in the file. You can now go directly to any QML method in the file.
*/
\section1 Add a license header template for C++ code /*!
\page creator-how-to-add-license-header-templates.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-projects
\title Add a license header template for C++ code
Specify a file that has a license header for C++ in \uicontrol Edit > Specify a file that has a license header for C++ in \uicontrol Edit >
\uicontrol Preferences > \uicontrol C++ > \uicontrol {File Naming} > \uicontrol Preferences > \uicontrol C++ > \uicontrol {File Naming} >
@@ -223,20 +299,41 @@
\li \c %$VARIABLE%: Contents of environment variable \c{VARIABLE}. \li \c %$VARIABLE%: Contents of environment variable \c{VARIABLE}.
\endlist \endlist
*/
\section1 Paste text from my clipboard history /*!
\page creator-how-to-paste-text-from-clipboard-history.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-edit
\title Paste text from clipboard history
\QC stores copied text in clipboard history. To retrieve clips from the \QC stores copied text in clipboard history. To retrieve clips from the
history, press \key {Ctrl+Shift+V} until the clip appears. history, press \key {Ctrl+Shift+V} until the clip appears.
The number of clips in the history is fixed to 10. The number of clips in the history is fixed to 10.
*/
\section1 Sort lines alphabetically /*!
\page creator-how-to-sort-lines-alphabetically.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-edit
\title Sort lines alphabetically
To sort selected lines alphabetically, select \uicontrol Edit > To sort selected lines alphabetically, select \uicontrol Edit >
\uicontrol Advanced > \uicontrol {Sort Selected Lines} or press \uicontrol Advanced > \uicontrol {Sort Selected Lines} or press
\key {Alt+Shift+S} (or \key Ctrl+Shift+S on \macos). \key {Alt+Shift+S} (or \key Ctrl+Shift+S on \macos).
*/
\section1 Enclose selected code in curly braces, parentheses, or double quotes /*!
\page creator-enclose-code-in-characters.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-edit
\title Enclose selected code in curly braces, parentheses, or double quotes
When you have selected code and enter one of the following opening When you have selected code and enter one of the following opening
characters, the matching closing character is added automatically characters, the matching closing character is added automatically
@@ -253,45 +350,87 @@
\uicontrol {Text Editor} > \uicontrol Completion. \uicontrol {Text Editor} > \uicontrol Completion.
\image qtcreator-options-texteditor-completion.png "Completion preferences" \image qtcreator-options-texteditor-completion.png "Completion preferences"
*/
\section1 Select the enclosing block in C++ /*!
\page creator-how-to-select-enclosing-block.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-edit
\title Select the enclosing block in C++
Press \key {Ctrl+U}. Press \key {Ctrl+U}.
*/
\section1 Add my own code snippets to the auto-complete menu /*!
\page creator-how-to-add-code-snippets.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-edit
You can add, modify, and remove snippets in the snippet editor. \title Add code snippets to the auto-complete menu
Add, modify, and remove snippets in the snippet editor.
To open the editor, select \uicontrol Edit > \uicontrol Preferences To open the editor, select \uicontrol Edit > \uicontrol Preferences
> \uicontrol {Text Editor} > \uicontrol Snippets. > \uicontrol {Text Editor} > \uicontrol Snippets.
\image qtcreator-snippet-modifiers.png "Snippets preferences" \image qtcreator-snippet-modifiers.png "Snippets preferences"
For more information, see \l {Adding and Editing Snippets}. For more information, see \l {Adding and Editing Snippets}.
*/
\section1 Quickly write down notes somewhere /*!
\page creator-how-to-write-notes.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-edit
Select \uicontrol File > \uicontrol {New File} > \title Write down notes
\uicontrol General > \uicontrol {Scratch Buffer}.
Alternatively, \key {Ctrl+N} can be used to open this dialog, which is
fully navigable via keyboard by using the up and down arrow keys and the
tab key.
This creates a new empty text file and saves it to the temporary directory To write down notes without having to worry about deleting the file
on your machine. You can use it to write down notes without having to worry later, create a new empty text file and save it to a temporary directory
about deleting the file afterwards. The operating system will eventually on your machine.
remove the file automatically. If you want to keep the file, you can easily
save it as a new file somewhere else. If you accidentally close the file,
you can find it in the \uicontrol File > \uicontrol {Recent Files} menu.
\section1 Configure the amount of recent files shown \image qtcreator-scratch-buffer.webp {Scratch file open in the text editor}
To create a scratch file and open it in the text editor:
\list
\li Select \uicontrol File > \uicontrol {New File} > \uicontrol General >
\uicontrol {Scratch Buffer}.
\li Press \key {Ctrl+N}.
\endlist
Use the up and down arrow keys and the tab key to navigate in the editor.
The operating system will eventually remove the file automatically. To keep
the file, save it as a new file somewhere else. If you accidentally close the
file, find it in \uicontrol File > \uicontrol {Recent Files}.
*/
/*!
\page creator-how-to-set-recent-files.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-ui
\title Set the number of recent files shown
Set the value of \uicontrol Edit > \uicontrol Preferences > Set the value of \uicontrol Edit > \uicontrol Preferences >
\uicontrol Environment > \uicontrol System \uicontrol Environment > \uicontrol System
> \uicontrol {Maximum number of entries in "Recent Files"}. > \uicontrol {Maximum number of entries in "Recent Files"}.
\image qtcreator-options-environment-system.png "System preferences" \image qtcreator-options-environment-system.png "System preferences"
*/
\section1 Search and replace across files using a regular expression /*!
\page creator-how-to-search-and-replace-using-regexp.html
\previouspage creator-how-to-move-between-open-files.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-edit
\title Search and replace across files using a regular expression
As an example, say you want to replace equality checks (\c {foo == bar}) As an example, say you want to replace equality checks (\c {foo == bar})
with a function (\c {foo.equals(bar)}): with a function (\c {foo.equals(bar)}):

View File

@@ -130,7 +130,7 @@
\section1 Managing Test Suites and Cases \section1 Managing Test Suites and Cases
You can manage Squish test suites and cases in the \uicontrol Squish You can manage Squish test suites and cases in the \uicontrol Squish
\l {Working with Sidebars}{view}. \l {Show and hide sidebars}{view}.
\image qtcreator-squish-view.png "Squish sidebar view" \image qtcreator-squish-view.png "Squish sidebar view"

View File

@@ -10,7 +10,7 @@
This section has answers to some frequently asked questions about \QC. This section has answers to some frequently asked questions about \QC.
You might also find answers to your questions in the You might also find answers to your questions in the
\l{Known Issues} and \l{How-tos} sections, or the Troubleshooting \l{Known Issues} and \l{How-to} sections, or the Troubleshooting
sections for a special area, such as sections for a special area, such as
\l{Troubleshooting Debugger}{debugging}. \l{Troubleshooting Debugger}{debugging}.
@@ -22,7 +22,7 @@
Remove the settings files created by \QC. Remove the settings files created by \QC.
For more information about where the files are located on each supported For more information about where the files are located on each supported
platform, see \l {Location of Settings Files}. platform, see \l {Find settings files}.
\b {\QC comes with \MinGW, should I use this version with Qt?} \b {\QC comes with \MinGW, should I use this version with Qt?}

View File

@@ -22,7 +22,7 @@
in different build and run \l{glossary-buildandrun-kit}{kits}. in different build and run \l{glossary-buildandrun-kit}{kits}.
\note Meson build plugin is disabled by default, see \note Meson build plugin is disabled by default, see
\l{Enabling and Disabling Plugins}. \l{Enable and disable plugins}{How-to: Enable and disable plugins}.
\section1 Adding Meson Tools \section1 Adding Meson Tools

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2021 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
// ********************************************************************** // **********************************************************************
@@ -142,55 +142,16 @@
\section1 Managing Plugins \section1 Managing Plugins
\QC comes with a set of plugins, some of which are disabled by default. \QC comes with a set of plugins, some of which are disabled by default.
You can enable disabled plugins if you need them and disable plugins you You can \l{Enable and disable plugins}{enable} disabled plugins if you
don't need. need them and disable plugins you don't need.
You can download and install additional plugins from You can \l{Install plugins}{download and install} more plugins from
\l{https://marketplace.qt.io/}{Qt Marketplace} or some \l{https://marketplace.qt.io/}{Qt Marketplace} or some
other source, such as \l{https://github.com/}{GitHub}. other source, such as \l{https://github.com/}{GitHub}.
\section2 Enabling and Disabling Plugins
New \QC plugins are often introduced as \e {experimental plugins} to let you
try them out before they are fully supported. Experimental plugins are
disabled by default and you must enable them for them to become visible
after you restart \QC. By default, all the plugins that the plugin depends
on are also enabled.
You can also disable plugins that you do not use, to streamline \QC.
By default, all the plugins that depend on the plugin are also disabled.
To enable and disable plugins, select \uicontrol Help > To enable and disable plugins, select \uicontrol Help >
\uicontrol {About Plugins}. \uicontrol {About Plugins}.
\image qtcreator-installed-plugins.png "Installed Plugins dialog" To install plugins, select \uicontrol Help > \uicontrol {About Plugins} >
\uicontrol {Install Plugins}.
\section2 Installing Plugins
Qt Marketplace has links to \QC plugins that you can download and
install either for free or for a price set by their publisher. You can
browse the available plugins in the \uicontrol Marketplace tab in the
Welcome mode.
\note You can install only plugins that your \QC version supports.
To install plugins:
\list 1
\li Select \uicontrol Help > \uicontrol {About Plugins} >
\uicontrol {Install Plugins}.
\li In the \uicontrol Source dialog, enter the path to the archive
or library that has the plugin.
\image qtcreator-install-plugin-source.png
\li In the \uicontrol {Install Location} dialog, select
\uicontrol {User plugins} to make the plugin available for the
current user in all compatible \QC instances or
\uicontrol {\QC installation} to make the plugin available for
all users of a particular \QC instance.
\image qtcreator-install-plugin-location.png
\li In the \uicontrol Summary dialog, select \uicontrol Finish to
install the plugin.
\image qtcreator-install-plugin-summary.png
\li Select \uicontrol {Restart Now} to restart \QC and load the plugin.
\endlist
*/ */

View File

@@ -30,7 +30,7 @@
Has answers to some frequently asked questions about \QC. Has answers to some frequently asked questions about \QC.
\li \l{How-tos} \li \l{How-to}
Lists useful \QC features. Lists useful \QC features.

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2021 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
// ********************************************************************** // **********************************************************************
@@ -80,21 +80,18 @@
For more information, see \l{Building and Running}. For more information, see \l{Building and Running}.
\li \b {\l{Testing}} \li \b {\l{Testing}}
\QC integrates several external native debuggers: GNU \QC integrates several external native debuggers that you can use
Symbolic Debugger (GDB), Microsoft Console Debugger (CDB), and to inspect the state of your application while debugging.
internal JavaScript debugger. In the \uicontrol Debug mode, you
can inspect the state of your application while debugging.
Devices have limited memory and CPU power, so Devices have limited memory and CPU power, so you should use them
you should use them carefully. \QC integrates Valgrind code carefully. \QC integrates code analysis tools for detecting
analysis tools for detecting memory leaks and profiling function memory leaks, profiling function execution, analyzing CPU use,
execution. In addition, the QML Profiler enables you to profile and eliminating unnecessary complexity of code. Other tools
Qt Quick applications. provide code coverage and visualize trace events.
\QC integrates the \l{Qt Test}, Boost.Test, Catch 2 test, \QC integrates several testing frameworks for unit testing
and Google C++ Testing frameworks for unit testing applications applications and libraries. You can use \QC to create, build,
and libraries. You can use \QC to create, build, and run and run autotests.
autotests.
For more information, see \l{Testing}. For more information, see \l{Testing}.
\li \b {Publishing} \li \b {Publishing}

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2019 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
// ********************************************************************** // **********************************************************************
@@ -29,11 +29,11 @@
\li \l{Analyzing Code} \li \l{Analyzing Code}
\QC integrates Valgrind code analysis tools for detecting memory Use tools for analyzing C++ and QML code to identify issues in
leaks and profiling function execution. You must download and memory management, CPU usage, coding constructs, and so on. You
install them separately to use them from \QC. The QML Profiler is must install and configure the tools on your system to use them
installed as part of \QC. It enables you to profile your Qt Quick from \QC. However, the QML Profiler is installed as part of \QC
applications. for profiling Qt Quick applications.
\li \l{Running Autotests} \li \l{Running Autotests}

View File

@@ -123,6 +123,10 @@
\endtable \endtable
The following video shows how to create a Qt Widgets application project:
\youtube FTSvDmcAgPI
For examples of creating different types of projects, see For examples of creating different types of projects, see
\l{Tutorials}. \l{Tutorials}.

View File

@@ -64,7 +64,7 @@
the application has large image files that would need to be bundled the application has large image files that would need to be bundled
into the resource file before running the application. into the resource file before running the application.
\image qtcreator-application-output.png \image qtcreator-application-output.webp {Application Output view}
\if defined(qtcreator) \if defined(qtcreator)
For more information on the options you have, see For more information on the options you have, see

View File

@@ -19,8 +19,6 @@
\li \l{IDE Overview} \li \l{IDE Overview}
\li \l{User Interface} \li \l{User Interface}
\list \list
\li \l{Selecting Modes}
\li \l{Working with Sidebars}
\li \l{Browsing Project Contents} \li \l{Browsing Project Contents}
\list \list
\li \l{Projects} \li \l{Projects}
@@ -255,7 +253,7 @@
\list \list
\li \l{Using the Help Mode} \li \l{Using the Help Mode}
\li \l{FAQ} \li \l{FAQ}
\li \l{How-tos} \li \l{How-to}
\li \l{Known Issues} \li \l{Known Issues}
\li \l{Glossary} \li \l{Glossary}
\li \l{Technical Support} \li \l{Technical Support}

View File

@@ -103,7 +103,7 @@
\list \list
\li \l{Using the Help Mode} \li \l{Using the Help Mode}
\li \l{FAQ} \li \l{FAQ}
\li \l{How-tos} \li \l{How-to}
\li \l{Known Issues} \li \l{Known Issues}
\li \l{Glossary} \li \l{Glossary}
\endlist \endlist

View File

@@ -26,8 +26,8 @@
\image studio-live-preview.png \image studio-live-preview.png
\endif \endif
To preview any QML file that belongs to the project, right-click the project To preview any QML file that belongs to the project, right-click the
name in the \l Projects view, and select \uicontrol {Preview File}. filename in the \l Projects view, and select \uicontrol {Preview File}.
\if defined(qtdesignstudio) \if defined(qtdesignstudio)
To preview the whole UI, select \uicontrol {Show Live Preview} To preview the whole UI, select \uicontrol {Show Live Preview}

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2022 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*! /*!
@@ -8,8 +8,7 @@
\title File System \title File System
If you cannot see a file in the \l Projects view, switch to the The \uicontrol {File System} view shows all the files in the file system.
\uicontrol {File System} view, which shows all the files in the file system.
\note Usually, \l{Searching with the Locator}{searching with the locator} \note Usually, \l{Searching with the Locator}{searching with the locator}
is the fastest way to find a particular project, file, class, or function, is the fastest way to find a particular project, file, class, or function,
@@ -17,12 +16,9 @@
to open files from anywhere in the file system. to open files from anywhere in the file system.
\if defined(qtdesignstudio) \if defined(qtdesignstudio)
The following image displays the \uicontrol {File System} view in the \image qtcreator-filesystem-view-design.png {File System view}
\uicontrol Design mode:
\image qtcreator-filesystem-view-design.png "File System view in the Design mode"
\else \else
\image qtcreator-filesystem-view.webp "File System view in the sidebar" \image qtcreator-filesystem-view.webp {File System view in the sidebar}
\endif \endif
To move to the root directory of the file system, select \uicontrol Computer To move to the root directory of the file system, select \uicontrol Computer
@@ -87,19 +83,11 @@
\li Collapse all open folders. \li Collapse all open folders.
\endlist \endlist
\if defined(qtcreator)
\section1 File System View Toolbar \section1 File System View Toolbar
\if defined(qtdesignstudio)
In the \uicontrol Edit and \uicontrol Debug mode, the
\uicontrol {File System} view is displayed in the \l{Working with Sidebars}
{sidebar}. It has a toolbar with additional options.
\image qtcreator-filesystem-view.webp "File System view in the sidebar"
\else
The toolbar in the \uicontrol {File System} view has additional The toolbar in the \uicontrol {File System} view has additional
options. options.
\endif
To manage view contents, select \inlineimage icons/filtericon.png To manage view contents, select \inlineimage icons/filtericon.png
(\uicontrol Options): (\uicontrol Options):
@@ -116,4 +104,5 @@
To stop the synchronization with the file currently open in the To stop the synchronization with the file currently open in the
editor, deselect \inlineimage icons/linkicon.png editor, deselect \inlineimage icons/linkicon.png
(\uicontrol {Synchronize with Editor}). (\uicontrol {Synchronize with Editor}).
\endif
*/ */

View File

@@ -1,24 +1,19 @@
// Copyright (C) 2020 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*! /*!
\page creator-sidebars.html \page creator-how-to-show-and-hide-sidebars.html
\if defined(qtdesignstudio) \previouspage creator-how-tos.html
\previouspage creator-coding-navigating.html \nextpage creator-known-issues.html
\else \ingroup creator-how-to-ui
\previouspage creator-modes.html
\endif
\nextpage creator-views.html
\title Show and hide sidebars
\title Working with Sidebars In some \l{Switch between modes}{modes}, you can use a left and right
sidebar to organize different views into project contents. Only views
that are relevant to the mode you are working in are available in it.
In the \uicontrol Edit mode, you can use a left and right sidebar to Select views in the sidebar menu (1):
organize different views into project contents. Only views that are
relevant to the \l{Selecting Modes}{mode} you are working in are
available in it.
You can select views in the sidebar menu (1):
\image qtcreator-sidebar.png \image qtcreator-sidebar.png
@@ -27,8 +22,8 @@
\list \list
\li To toggle the left sidebar, click \inlineimage icons/leftsidebaricon.png \li To toggle the left sidebar, click \inlineimage icons/leftsidebaricon.png
(\uicontrol {Hide Left Sidebar/Show Left Sidebar}) or press (\uicontrol {Hide Left Sidebar/Show Left Sidebar}) or press
\key Alt+0 (\key Cmd+0 on \macos). To toggle the right \key Alt+0 (\key Cmd+0 on \macos).
sidebar, click \inlineimage icons/rightsidebaricon.png \li To toggle the right sidebar, click \inlineimage icons/rightsidebaricon.png
(\uicontrol {Hide Right Sidebar/Show Right Sidebar}) or press (\uicontrol {Hide Right Sidebar/Show Right Sidebar}) or press
\key Alt+Shift+0 (\key Cmd+Shift+0 on \macos). \key Alt+Shift+0 (\key Cmd+Shift+0 on \macos).
\li To split a sidebar, click \inlineimage icons/splitbutton_horizontal.png \li To split a sidebar, click \inlineimage icons/splitbutton_horizontal.png

View File

@@ -0,0 +1,75 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\page creator-how-to-switch-between-modes.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-ui
\title Switch between modes
\e Modes let you quickly switch between tasks such as editing
project and source files, designing application UIs, configuring projects
for building and running, and debugging or analyzing source code.
To switch between modes:
\list
\li Click the icons on the mode selector.
\li Use the \l{keyboard-shortcuts}{corresponding keyboard shortcut}.
\endlist
\table
\header
\li {2,1} Mode
\li Keyboard Shortcut
\li Purpose
\li Read More
\row
\li {1,7} \inlineimage qtcreator-mode-selector.png
\row
\li \uicontrol Welcome
\li \key Ctrl+1
\li Open projects, tutorials, and examples.
\li \l{User Interface}
\row
\li \uicontrol Edit
\li \key Ctrl+2
\li Edit project and source files.
\li \l{Working in Edit Mode}
\row
\li \uicontrol Design
\li \key Ctrl+3
\li Design and develop application user interfaces.
This mode is available for UI files.
\li \l{Designing User Interfaces}
\row
\li \uicontrol Debug
\li \key Ctrl+4
\li Inspect the state of your application while debugging or use code
analysis tools to detect memory leaks and profile code.
\li \l{Debugging}
\row
\li \uicontrol Projects
\li \key Ctrl+5
\li Configure how to build and run projects.
This mode is available when a project is open.
\li \l{Specifying Build Settings}
\row
\li \uicontrol Help
\li \key Ctrl+6
\li Read documentation.
\li \l{Using the Help Mode}
\endtable
Some actions in \QC trigger a mode change. For example,
selecting \uicontrol {Debug} > \uicontrol {Start Debugging} >
\uicontrol {Start Debugging of Startup Project} automatically
switches to \uicontrol {Debug} mode.
To hide the mode selector and to save space on the display, select
\uicontrol View > \uicontrol {Mode Selector Style} > \uicontrol Hidden.
To only show icons on the mode selector, select the \uicontrol {Icons Only}
style.
*/

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2022 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*! /*!
@@ -13,6 +13,7 @@
\title Projects \title Projects
The \uicontrol Projects view displays projects in a project tree. The \uicontrol Projects view displays projects in a project tree.
The project tree has a list of all projects open in the current The project tree has a list of all projects open in the current
\l{Managing Sessions}{session}. For each project, the tree visualizes \l{Managing Sessions}{session}. For each project, the tree visualizes
the build system structure of the project and lists all files that the build system structure of the project and lists all files that
@@ -23,12 +24,9 @@
or almost anything else in your project. or almost anything else in your project.
\if defined(qtdesignstudio) \if defined(qtdesignstudio)
The following image displays the \uicontrol Projects view in the \image qtcreator-projects-view-design.png {Projects view}
\uicontrol Design mode:
\image qtcreator-projects-view-design.png "Projects view in the Design mode"
\else \else
\image qtcreator-projects-view-edit.png "Projects view in the sidebar" \image qtcreator-projects-view-edit.png {Projects view in the sidebar}
\endif \endif
You can use the project tree in the following ways: You can use the project tree in the following ways:
@@ -37,8 +35,11 @@
\li To open files that belong to a \l{Creating Projects}{project}, \li To open files that belong to a \l{Creating Projects}{project},
double-click them in the project tree. Files open in the double-click them in the project tree. Files open in the
appropriate editor, according to the file type. For example, code appropriate editor, according to the file type. For example, code
source files open in the code editor. Use the \l{Selecting Modes} source files open in the code editor.
{mode selector} to open the current file in another editor. \if defined(qtcreator)
Use the \l{Switch between modes} {mode selector} to open the current
file in another editor.
\endif
\li To bring up a \l{Projects View Context Menu}{context menu} \li To bring up a \l{Projects View Context Menu}{context menu}
that has the actions most commonly needed, right-click an that has the actions most commonly needed, right-click an
item in the project tree. For example, through the menu of item in the project tree. For example, through the menu of
@@ -51,6 +52,9 @@
configuration files. configuration files.
\endlist \endlist
\note If you cannot see a file in the \l Projects view, switch to the
\uicontrol {File System} view, which shows all the files in the file system.
\section1 Projects View Context Menu \section1 Projects View Context Menu
The \uicontrol Projects view has context menus for managing projects, The \uicontrol Projects view has context menus for managing projects,
@@ -58,8 +62,10 @@
projects and subprojects: projects and subprojects:
\list \list
\if defined(qtcreator)
\li Set a project as the active project. \li Set a project as the active project.
\li Execute the \uicontrol Build menu commands. \endif
\li Execute \uicontrol Build menu commands.
\li Create new files. For more information, see \li Create new files. For more information, see
\if defined(qtdesignstudio) \if defined(qtdesignstudio)
\l{Adding Files to Projects}. \l{Adding Files to Projects}.
@@ -106,18 +112,10 @@
the \l {File System} view. To view a project in it, select the \l {File System} view. To view a project in it, select
\uicontrol {Show in File System View}. \uicontrol {Show in File System View}.
\if defined(qtcreator)
\section1 Projects View Toolbar \section1 Projects View Toolbar
\if defined(qtdesignstudio)
In the \uicontrol Edit and \uicontrol Debug mode, the
\l{Working with Sidebars}{sidebar} has the \uicontrol Projects
view. It has a toolbar with additional options.
\image qtcreator-projects-view-edit.png "Projects view in the sidebar"
\else
The toolbar in the \uicontrol Projects view has additional options. The toolbar in the \uicontrol Projects view has additional options.
\endif
To filter view contents, select \inlineimage icons/filtericon.png To filter view contents, select \inlineimage icons/filtericon.png
(\uicontrol {Filter Tree}): (\uicontrol {Filter Tree}):
@@ -140,7 +138,6 @@
currently opened in the editor, deselect \inlineimage icons/linkicon.png currently opened in the editor, deselect \inlineimage icons/linkicon.png
(\uicontrol {Synchronize with Editor}). (\uicontrol {Synchronize with Editor}).
\if defined(qtcreator)
Some build systems support adding and removing files to a project in \QC Some build systems support adding and removing files to a project in \QC
(currently qmake and Qbs). The faithful display of the project structure (currently qmake and Qbs). The faithful display of the project structure
enables you to specify exactly where to place a new file in the build system. enables you to specify exactly where to place a new file in the build system.
@@ -152,8 +149,5 @@
from the version control system in brackets after the project name. from the version control system in brackets after the project name.
\QC currently implements this for Git (the view displays the branch name \QC currently implements this for Git (the view displays the branch name
or a tag) and ClearCase (the view displays the branch name). or a tag) and ClearCase (the view displays the branch name).
\else
If the project is under Git version control, you can see the currently
checked out branch or tag in brackets after the project name.
\endif \endif
*/ */

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2022 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
// ********************************************************************** // **********************************************************************
@@ -11,109 +11,95 @@
\page creator-quick-tour.html \page creator-quick-tour.html
\if defined(qtdesignstudio) \if defined(qtdesignstudio)
\previouspage {Tutorials} \previouspage {Tutorials}
\nextpage creator-using-qt-quick-designer.html
\else \else
\previouspage creator-overview.html \previouspage creator-overview.html
\nextpage creator-views.html
\endif \endif
\nextpage creator-modes.html
\title User Interface \title User Interface
When you start \QC, it opens to the \uicontrol Welcome mode, where you can:
\list
\if defined(qtcreator)
\li Open recent sessions
\endif
\li Open recent projects
\li Create and open projects
\li Open tutorials and example projects
\if defined(qtcreator)
\li Browse Qt extensions in the \l{https://marketplace.qt.io/}
{Qt Marketplace}
\li Download the Qt Installer
\endif
\li Read news from the online community and Qt blogs
\li Create or manage a Qt Account
\endlist
\if defined(qtcreator) \if defined(qtcreator)
\image qtcreator-breakdown.png When you start \QC, it opens to the \uicontrol Welcome mode.
\else
\image studio-welcome-mode.png
\endif
\if defined(qtcreator) \image qtcreator-breakdown.png {Welcome mode}
Do you want to perform a particular task, such as designing the UI,
writing code, or debugging the application? Select the appropriate mode in
the \l{Selecting Modes}{mode selector} (1).
Are you ready to build the application for particular hardware or (5) \table
run (3) or debug (4) it on a device? Use the kit selector (2) to select \header
the appropriate \l{glossary-buildandrun-kit}{kit}. The task bar (7) \li Number
displays output from these actions. \li UI Control
\li Purpose
\li Read More
\row
\li \inlineimage numbers/01.png
\li Mode selector
\li Perform a particular task, such as designing the UI, writing code, or
debugging the application.
\li \l{Switch between modes}
\row
\li \inlineimage numbers/02.png
\li Kit selector
\li Select the appropriate \l{glossary-buildandrun-kit}{kit} for building
the project and running it on particular hardware.
\li \l{Activating Kits for a Project}
\row
\li \inlineimage numbers/03.png
\li Run button
\li Run the application on the selected target platform.
\li \l{Running on Multiple Platforms}
\row
\li \inlineimage numbers/04.png
\li Debug button
\li Debug the application on the selected target platform.
\li \l{Debugging}
\row
\li \inlineimage numbers/05.png
\li Build button
\li Build the application using the selected kit.
\li \l{Building for Multiple Platforms}
\row
\li \inlineimage numbers/06.png
\li Locator
\li Find a particular project, file, class, or function.
\li \l{Searching with the Locator}
\row
\li \inlineimage numbers/07.png
\li Output
\li View output from building, running, and other actions.
\li \l{Viewing Output}
\endtable
Are you looking for a particular project, file, class, or function? To see where the above controls are in the UI, select
Start typing its name in the \l{Searching with the Locator}{locator} (6).
To see where the above controls are in the user interface, select
\uicontrol Help > \uicontrol {UI Tour}. \uicontrol Help > \uicontrol {UI Tour}.
The following sections describe some \QC controls in more detail: The following video shows the parts of the UI and the \uicontrol Welcome
mode:
\list \youtube hOx3dod5-1A
\li \l{Selecting Modes}{Mode selector}
\li \l{Working with Sidebars}{Sidebars}
\li \l{Browsing Project Contents}{Views}
\li \l{Viewing Output}{Output}
\endlist
\else
You can use the \l{Selecting Modes}{mode selector} to switch to the
\l{Design Views}{Design mode} (1), where you will do
most of your work and the \l{Using the Help Mode}{Help} (2) mode, where
you can read the product documentation. The other modes are for more
advanced use, and you are likely to need them less often.
Below the mode selector, you can find shortcuts to some more advanced
functions, such as running the application or finding problems in the
QML code by debugging or profiling it.
\endif
\section1 What's New? \section1 What's New?
For information about new features and bug fixes in each \QC release, For information about new features and bug fixes in each \QC release,
select \uicontrol Help > \uicontrol {Change Log}. select \uicontrol Help > \uicontrol {Change Log}.
\section1 For \macos Users \sa {Show and hide sidebars}, {Browsing Project Contents}
\sa {Use the UI}{How-to: Use the UI}
\QC uses standard names and locations for standard features, such as \else
\e preferences. In this manual, the names and locations on
Windows and Linux are usually used to keep the instructions short. Here are
some places to check if you cannot find a function, dialog, or keyboard
shortcut on \macos when following the instructions:
\table When you start \QC, it opens to the \uicontrol Welcome mode, where you can:
\header
\li For \list
\li Look In \li Open recent projects
\row \li Create and open projects
\li \uicontrol Edit > \uicontrol Preferences \li Open tutorials and example projects
\li \uicontrol {\QC} > \uicontrol Preferences \li Read news from the online community and Qt blogs
\row \li Create or manage a Qt Account
\li \uicontrol Help > \uicontrol {About Plugins} \endlist
\li \uicontrol {\QC} > \uicontrol {About Plugins}
\row \image studio-welcome-mode.webp {Welcome mode}
\li Keyboard shortcuts
\li \uicontrol {\QC} > \uicontrol Preferences > \uicontrol Environment > \endif
\uicontrol Keyboard
\endtable
\if defined(qtdesignstudio) \if defined(qtdesignstudio)
\section1 Customizing the Menu \section1 Customizing the Menu
@@ -134,227 +120,25 @@
You need to restart \QDS to apply changes made to these settings. You need to restart \QDS to apply changes made to these settings.
\endif \section1 Customizing the UI
\section1 Switching UI Themes The following topics describe how to customize the UI:
Themes enable you to change the appearance of the UI from dark to light,
for example. To switch themes, select \uicontrol Edit > \uicontrol Preferences
> \uicontrol Environment, and then select a theme in the \uicontrol Theme
field.
\image qtcreator-preferences-environment-interface.webp {Interface preferences}
\section1 Changing Languages
\QC has several language versions. If the system language
is one of the supported languages, \QC selects it automatically. To
change the language, select \uicontrol Edit > \uicontrol Preferences >
\uicontrol Environment and select a language in the \uicontrol Language
field. Select \uicontrol {Restart Now} to restart \QC and have the change
take effect.
\section1 High DPI Scaling
The operating systems that \QC supports implement high dots-per-inch (DPI)
scaling at varying levels. Therefore, \QC handles high DPI scaling
differently on different operating systems:
\list \list
\li On \macos, \QC forces high DPI scaling, which means that it allows \li \l {Find menu items on \macos}
Qt to use the system scaling factor as the \QC scaling factor. \li \l {Set high DPI scaling}
\li On Windows, if you do not set \l{High DPI} \li \l {Switch UI themes}
{scaling environment variables}, \QC instructs Qt to detect the
scaling factor and use it as the \QC scaling factor.
\li On Linux, \QC leaves it to the user to enable high DPI scaling
because the process varies so much on different distributions
and windowing systems that it cannot be reliably done automatically.
\endlist \endlist
To override the default approach and always enable high-DPI scaling, select
\uicontrol Edit > \uicontrol Preferences > \uicontrol Environment >
\uicontrol {Enable high DPI scaling}. The changes will take effect after you
restart \QC.
\section1 Navigating with Keyboard
\QC caters not only to those users who like to use the mouse, but also
to those who are more comfortable with the keyboard. A wide range of
\l{keyboard-shortcuts}{keyboard} and \l{Searching with the Locator}
{navigation} shortcuts are available to help you work faster.
\if defined(qtcreator)
\section1 Useful Features
For a list of useful \QC features described in other parts of the
documentation, see \l{How-tos}.
\endif
\section1 Viewing Images \section1 Viewing Images
\QC opens image files in the image viewer. The following topics describe how to use the image viewer:
\image qtcreator-image-viewer.png "Image viewer" \list
\li \l {Export SVG images}
Use the toolbar buttons or \l{Keyboard Shortcuts}{keyboard shortcuts} to: \li \l {View images}
\list
\li \inlineimage icons/export.png
- Export SVG images to pixmaps or copy an image as a data URL, which
enables you to include it in web pages as if it were an external
resource
\li \inlineimage icons/original-size.png
- Return images to their original size
\li \inlineimage icons/zoom-in.png
- Zoom in and out (\inlineimage icons/zoom-out.png
)
\li \inlineimage icons/run_small.png
- Play and pause animated GIF and MNG images
\li \inlineimage icons/qtcreator-desktopdevice-button.png
- Show and hide the image background
\li \inlineimage icons/switch-outline.png
- Show and hide the image outline
\li \inlineimage icons/fittoview.png
- Fit images to screen
\endlist \endlist
Select \uicontrol {Set as Default} to use the current settings for the
background and outline modes and fitting images to screen as default
values for the image viewer.
\section2 Exporting SVG Images
If you have a freely scalable icon in the SVG format,
you can export it to several images of different sizes to create a set of
pixmaps.
\if defined(qtcreator)
You can then use QIcon::addPixmap() to add the pixmaps to icons in
different modes and states.
\endif
\if defined(qtcreator)
\section1 Location of Settings Files
\QC creates the following files and directories:
\list
\li QtCreator.db
\li QtCreator.ini
\li qtversion.xml
\li toolChains.xml
\li qtcreator
\li qtc-qmldump
\endlist
The location of the above files and directories depends on the platform:
\list
\li On Linux and other Unix platforms, look in
\c {~/.config/QtProject} and
\c {~/.local/share/data/QtProject/qtcreator}.
\li On \macos, look in \c {~/.config/QtProject} and
\c {~/Library/Application Support/QtProject/Qt Creator}.
\li On Windows, look in
\c {%appdata%\QtProject} and \c {%localappdata%\QtProject}.
\endlist
\endif
*/
/*!
\page creator-modes.html
\previouspage creator-quick-tour.html
\if defined(qtdesignstudio)
\nextpage creator-using-qt-quick-designer.html
\else
\nextpage creator-sidebars.html
\endif
\title Selecting Modes
\image qtcreator-mode-selector.png
\if defined(qtcreator)
The mode selector allows you to quickly switch between tasks such as editing
project and source files, designing application UIs, configuring projects for
building and running, and debugging your applications. To change
modes, click the icons, or use the \l{keyboard-shortcuts}
{corresponding keyboard shortcut}.
To hide the mode selector and to save space on the display, select
\uicontrol View > \uicontrol {Mode Selector Style} > \uicontrol Hidden.
To only show icons on the mode selector, select the \uicontrol {Icons Only}
style.
\endif
\if defined(qtdesignstudio)
The mode selector is hidden by default.
To show the mode selector, go to \uicontrol Views >
\uicontrol {Mode Selector Style} and select \uicontrol {Icons and Text}
or \uicontrol {Icons Only}.
\endif
You can use \QC in the following modes:
\list
\li \uicontrol {\l{User Interface}{Welcome}} mode for opening projects,
tutorials, and examples.
\li \uicontrol{\l{Coding}{Edit}} mode for editing project and source
files.
\if defined(qtcreator)
\li \uicontrol{\l{Designing User Interfaces}{Design}}
mode for designing and developing application user interfaces.
This mode is available for UI files.
\else
\li \uicontrol{\l{Design Views}{Design}}
mode for designing and developing application user interfaces.
As a designer, you'll do most of your work in this mode.
\endif
\if defined(qtcreator)
\li \uicontrol{\l{Debugging}{Debug}}
\else
\li \uicontrol {\l{Debugging and Profiling}{Debug}}
\endif
mode for inspecting the state of your
application while debugging and for using code analysis tools
to detect memory leaks and profile code.
\if defined(qtcreator)
\li \uicontrol{\l{Specifying Build Settings}{Projects}} mode
for configuring project building and execution.
\else
\li \uicontrol{\l{Selecting the Preview Tool}{Projects}} mode
for selecting the tool to use for live preview.
\endif
This mode is available when a project is open.
\li \uicontrol{\l{Using the Help Mode}{Help}} mode for viewing
documentation.
\endlist
\if defined(qtcreator)
Certain actions in \QC trigger a mode change. Clicking on \uicontrol {Debug} >
\uicontrol {Start Debugging} > \uicontrol {Start Debugging} automatically switches to
\uicontrol {Debug} mode.
\endif \endif
*/ */
@@ -370,9 +154,9 @@
\title Viewing Output \title Viewing Output
\image qtcreator-general-messages.png "General Messages" \image qtcreator-general-messages.webp {General Messages}
The taskbar in \QC can display following types of output: You can view the following types of output:
\list \list
@@ -410,7 +194,12 @@
\endlist \endlist
Output is available on the taskbar in all \l{Selecting Modes}{modes}. Output is available on the taskbar in all
\if defined(qtcreator)
\l{Switch between modes}{modes}.
\else
\l{Mode}{modes}.
\endif
\image qtcreator-output-panes-taskbar.webp "Output on the taskbar" \image qtcreator-output-panes-taskbar.webp "Output on the taskbar"
@@ -575,7 +364,7 @@
In \uicontrol{Search Results}, you can search through projects, files on In \uicontrol{Search Results}, you can search through projects, files on
a file system or the currently open files: a file system or the currently open files:
\image qtcreator-search-results.png "Search Results" \image qtcreator-search-results.webp {Search Results - criteria}
The search history (1) stores the search results. You can select earlier The search history (1) stores the search results. You can select earlier
searches from the history. searches from the history.
@@ -583,7 +372,7 @@
The figure below shows an example search result for all The figure below shows an example search result for all
occurrences of the search string in the specified directory. occurrences of the search string in the specified directory.
\image qtcreator-searchresults.png \image qtcreator-search-results-matches.webp {Search Results - matches found}
For more information about the different search options, see For more information about the different search options, see
\l {Finding and Replacing}. \l {Finding and Replacing}.
@@ -593,7 +382,7 @@
\uicontrol{Application Output} displays the status of a program when \uicontrol{Application Output} displays the status of a program when
you execute it, and the debug output. you execute it, and the debug output.
\image qtcreator-application-output.png \image qtcreator-application-output.webp {Application Output}
\if defined(qtcreator) \if defined(qtcreator)
If you specify command line arguments in the run settings that are passed If you specify command line arguments in the run settings that are passed
@@ -619,7 +408,7 @@
The \uicontrol{Compile Output} is a more detailed version of information The \uicontrol{Compile Output} is a more detailed version of information
displayed in \l Issues. displayed in \l Issues.
\image qtcreator-compile-output.png "Compile Output" \image qtcreator-compile-output.webp {Compile Output}
Double-click on a file name in an error message to open the file in the Double-click on a file name in an error message to open the file in the
code editor. code editor.
@@ -770,13 +559,13 @@
subproject. Click the icons on the toolbar to show only the selected subproject. Click the icons on the toolbar to show only the selected
keywords. keywords.
\image qtcreator-todo-pane.png \image qtcreator-to-do-entries.webp {To-Do Entries}
To add keywords, select \uicontrol Edit > \uicontrol Preferences > To add keywords, select \uicontrol Edit > \uicontrol Preferences >
\uicontrol {To-Do} > \uicontrol Add. Set an icon and a line background color \uicontrol {To-Do} > \uicontrol Add. Set an icon and a line background color
for the keyword. for the keyword.
\image qtcreator-todo-options.png "To-Do preferences" \image qtcreator-todo-options.png {To-Do preferences}
To change the icon and line background color of the selected keyword, select To change the icon and line background color of the selected keyword, select
\uicontrol Edit. \uicontrol Edit.
@@ -793,7 +582,7 @@
To exclude files from scanning, select \uicontrol {Project Settings} > To exclude files from scanning, select \uicontrol {Project Settings} >
\uicontrol {To-Do} in the \uicontrol Projects mode. \uicontrol {To-Do} in the \uicontrol Projects mode.
\image qtcreator-todo-excluded-files.png "Excluded Files in To-Do preferences" \image qtcreator-todo-excluded-files.png {Excluded Files in To-Do preferences}
Select \uicontrol Add and double-click the placeholder text in Select \uicontrol Add and double-click the placeholder text in
\uicontrol {Exclude Files} to enter a regular expression that \uicontrol {Exclude Files} to enter a regular expression that

View File

@@ -1,26 +1,25 @@
// Copyright (C) 2021 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*! /*!
\page creator-views.html \page creator-views.html
\previouspage creator-sidebars.html
\if defined(qtdesignstudio) \if defined(qtdesignstudio)
\previouspage creator-coding-navigating.html
\nextpage creator-output-panes.html \nextpage creator-output-panes.html
\else \else
\previouspage creator-quick-tour.html
\nextpage creator-projects-view.html \nextpage creator-projects-view.html
\endif \endif
\title Browsing Project Contents \title Browsing Project Contents
You can organize \QC views in \l {Working with Sidebars}{sidebars} or as
\if defined(qtdesignstudio) \if defined(qtdesignstudio)
\l {Managing Workspaces}{workspaces}, You can organize \QDS views as \l {Managing Workspaces}{workspaces}.
\else \else
workspaces You can organize \QC views in \l {Show and hide sidebars}{sidebars} or as
workspaces, depending on the \l{Switch between modes}{mode} you are working
in. Only views that are relevant to a mode are available in it.
\endif \endif
depending on the \l{Selecting Modes}
{mode} you are working in. Only views that are relevant to a mode are
available in it.
\note Usually, \l{Searching with the Locator}{searching with the locator} \note Usually, \l{Searching with the Locator}{searching with the locator}
is the fastest way to find a particular project, file, class, or function, is the fastest way to find a particular project, file, class, or function,

View File

@@ -24,6 +24,11 @@
Generally, the integrated \QD has the same functions as the standalone Generally, the integrated \QD has the same functions as the standalone
\QD. The following sections describe the differences. \QD. The following sections describe the differences.
The following video shows how to use the integrated \QD to create a small Qt
Widgets-based application:
\youtube LnVjI0I7cKs
\section1 Code Editor Integration \section1 Code Editor Integration
To switch between forms (\uicontrol Design mode) and code (\uicontrol Edit mode), To switch between forms (\uicontrol Design mode) and code (\uicontrol Edit mode),

View File

@@ -645,6 +645,74 @@
executed code, and even then prefer Utils::HostInfo over #ifdefs. executed code, and even then prefer Utils::HostInfo over #ifdefs.
\endlist \endlist
\section2 Plugin Dependencies
To keep Qt Creator scalable we aim at keeping hard run-time dependencies
between plugins and to external libraries as few as reasonably possible.
There are several techniques for that.
\section2 Extending Base Plugin Functionality by Callbacks
This pattern allows leaf plugins to provide additional functionality
to a central plugin by injecting a callback.
It is used for functionality that is helpful in some setups but not
applicable or considered intrusive (e.g. because of size or external
dependencies) in others, so that users may want to enable or disable
it without impacting the rest of their setup.
The leaf plugin can then for example depend on a large (or otherwise
inconvenient) external dependency without imposing this dependency on
the central plugin.
The overall pattern looks like:
\list
\li In \c centralplugin/somewhere.h
\code
std::function<void(...)> &fancyLeafCallback();
void possiblyFancyOperation();
\endcode
\li In \c centralplugin/somewhere.cpp
\code
std::function<void(...)> &fancyLeafCallback()
{
static std::function<void(...)> callback;
return callback;
}
...
void possiblyFancyOperation()
{
if (auto callback = fancyLeafCallback()) {
// can be used
callback();
} else {
// not present, use some plain fallback implementation
// or error out
}
}
\endcode
\li In \c leafplugin/leafplugin.cpp:
\code
void LeafPlugininitialize()
{
...
Central::fancyLeafCallback() = [this](...) { doSomething; };
...
}
\endcode
\endlist
\section2 Plugin Extension Points \section2 Plugin Extension Points

View File

@@ -87,19 +87,75 @@
element. You can also add descriptive text to the UI that is always element. You can also add descriptive text to the UI that is always
visible. visible.
Consider adding tooltips for all UI elements that are not obvious from
the context. The tooltips should help users understand what the UI controls
do, so try to make them as clear as possible, even if they get a bit long.
\section3 Tooltips for Icons
For an icon, you can use the command name as a tool tip. In that For an icon, you can use the command name as a tool tip. In that
case, use book style capitalization and do not add a period after the tool case, use book style capitalization and do not add a period after the tool
tip. tip.
\image qtcreator-tooltip.png {Tooltip} \image qtcreator-tooltip.png {Tooltip}
Tooltips can also contain full sentences. Try to make them as short and \section3 Other Tooltips
concise as possible, while still making them grammatically correct. Use
sentence style capitalization and punctuation as you would for any Tooltips can also contain full sentences.
sentence.
\image qtcreator-tooltip-long.png {Sentence as a tooltip} \image qtcreator-tooltip-long.png {Sentence as a tooltip}
Follow these guidelines:
\list
\li Write useful tooltips, but keep them as short and concise as
possible.
\li To help people who localize and people for whom English is a second
language, make tooltips as grammatically clear as possible. Use the
articles a, an, and the, prepositions, such as of, and demonstrative
pronouns, such as this and that, wherever possible.
\li Use sentence style capitalization and punctuation as you would for
any sentence.
\li For input fields, describe the value of the field. Tell users what
they can enter in the field, such as a name or a path, unless it is
obvious from the context. Use a noun phrase, such as \e {The name of
the user account.} Describe limitations and special requirements.
\li For actions, such as most check boxes, radio buttons, push buttons,
and menu items, describe what happens when users select them. Use a
verb phrase, such as \e {Removes trailing whitespace upon saving.}
\li For combo boxes, describe when to pick each option.
\li Describe what the UI control does, not how to use it. If the control
does not work as users would expect it to, check your design, as you
most likely chose the wrong type of control.
\li Do not describe the default value or the minimum and maximum values,
as users can see them in the field.
\endlist
\section3 Examples
\table
\header
\li Control
\li Do
\li Don't
\row
\li Button - \uicontrol {Download Definitions}
\li Download missing and update existing syntax definition files.
\li You can select this button to download syntax definition files.
\row
\li Check box - \uicontrol {Clean whitespace}
\li Removes trailing whitespace upon saving.
\li Enable this check box to remove trailing whitespace upon saving.
\row
\li Combo box - \uicontrol Size
\li The font size used in the terminal (in points).
\li Use the up and down arrows to set the font size between 1 and 100.
\row
\li Field - \uicontrol {Shell arguments}
\li The arguments to be passed to the shell.
\li Sets the arguments to be passed to the shell.
\endtable
\section3 Writing Tooltips in Design Mode \section3 Writing Tooltips in Design Mode
In Qt Designer, use plain text for tooltips. For extra formatting, write In Qt Designer, use plain text for tooltips. For extra formatting, write
@@ -166,9 +222,11 @@
\section3 Checking Book Style Capitalization \section3 Checking Book Style Capitalization
You can use the to-title-case.js script in the \c{\doc\titlecase} If necessary, use an online \l{https://titlecaseconverter.com/}
folder to check book style capitalization of UI text or headings in {Title Case Converter} to check book style capitalization
documentation: of UI text or headings in documentation.
Or, use the to-title-case.js script in the \c{\doc\titlecase} folder:
\list 1 \list 1

View File

@@ -54,6 +54,7 @@ excludedirs += ../../qtcreator/examples/accelbubble \
../../qtcreator/src/python \ ../../qtcreator/src/python \
../../qtcreator/src/qnx \ ../../qtcreator/src/qnx \
../../qtcreator/src/qtquick/creator-only \ ../../qtcreator/src/qtquick/creator-only \
../../qtcreator/src/user-interface/creator-only \
../../qtcreator/src/vcs/creator-only \ ../../qtcreator/src/vcs/creator-only \
../../qtcreator/src/widgets \ ../../qtcreator/src/widgets \
../../qtcreator/src/webassembly ../../qtcreator/src/webassembly

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -151,12 +151,11 @@
\image studio-design-mode.webp "Design mode" \image studio-design-mode.webp "Design mode"
Read more about modes: The mode selector is hidden by default.
\list To show the mode selector, go to \uicontrol Views >
\li \l{Selecting Modes} \uicontrol {Mode Selector Style} and select \uicontrol {Icons and Text}
\li \l{Design Views} or \uicontrol {Icons Only}.
\endlist
\section1 Project \section1 Project
\target glossary-project \target glossary-project

View File

@@ -12,7 +12,6 @@
\li \l{Tutorials} \li \l{Tutorials}
\li \l{User Interface} \li \l{User Interface}
\list \list
\li \l{Selecting Modes}
\li \l{Design Views} \li \l{Design Views}
\list \list
\li \l{2D} \li \l{2D}
@@ -203,7 +202,6 @@
\list \list
\li \l{Working in Edit Mode} \li \l{Working in Edit Mode}
\list \list
\li \l{Working with Sidebars}
\li \l{Browsing Project Contents} \li \l{Browsing Project Contents}
\li \l{Viewing Output} \li \l{Viewing Output}
\endlist \endlist

View File

@@ -10,7 +10,7 @@
/*! /*!
\page creator-using-qt-quick-designer.html \page creator-using-qt-quick-designer.html
\previouspage creator-modes.html \previouspage creator-quick-tour.html
\nextpage qtquick-form-editor.html \nextpage qtquick-form-editor.html
\title Design Views \title Design Views

View File

@@ -1386,7 +1386,7 @@ class DumperBase():
self.putExpandable() self.putExpandable()
return return
if DisplayFormat.Array10 <= displayFormat and displayFormat <= DisplayFormat.Array1000: if DisplayFormat.Array10 <= displayFormat and displayFormat <= DisplayFormat.Array10000:
n = (10, 100, 1000, 10000)[displayFormat - DisplayFormat.Array10] n = (10, 100, 1000, 10000)[displayFormat - DisplayFormat.Array10]
self.putType(typeName) self.putType(typeName)
self.putItemCount(n) self.putItemCount(n)

View File

@@ -755,15 +755,15 @@ class Dumper(DumperBase):
qtVersionAndNamespace = None qtVersionAndNamespace = None
try: try:
qtVersionAndNamespace = self.fetchQtVersionAndNamespace() qtVersionAndNamespace = self.fetchQtVersionAndNamespace()
DumperBase.warn("Detected Qt Version: 0x%0x (namespace='%s')" % self.report("Detected Qt Version: 0x%0x (namespace='%s')" %
(qtVersionAndNamespace[1], qtVersionAndNamespace[0] or "no namespace")) (qtVersionAndNamespace[1], qtVersionAndNamespace[0] or "no namespace"))
except Exception as e: except Exception as e:
DumperBase.warn('[lldb] Error detecting Qt version: %s' % e) DumperBase.warn('[lldb] Error detecting Qt version: %s' % e)
try: try:
self.fetchInternalFunctions() self.fetchInternalFunctions()
DumperBase.warn('Found function QObject::property: 0x%0x' % self.qtPropertyFunc) self.report('Found function QObject::property: 0x%0x' % self.qtPropertyFunc)
DumperBase.warn('Found function QObject::customEvent: 0x%0x' % self.qtCustomEventFunc) self.report('Found function QObject::customEvent: 0x%0x' % self.qtCustomEventFunc)
except Exception as e: except Exception as e:
DumperBase.warn('[lldb] Error fetching internal Qt functions: %s' % e) DumperBase.warn('[lldb] Error fetching internal Qt functions: %s' % e)

View File

@@ -38,6 +38,7 @@ if (LINK_INSIGHT)
include(${CMAKE_CURRENT_SOURCE_DIR}/insight) include(${CMAKE_CURRENT_SOURCE_DIR}/insight)
endif () endif ()
include(GNUInstallDirs)
install(TARGETS %{ProjectName}App install(TARGETS %{ProjectName}App
BUNDLE DESTINATION . BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}

View File

@@ -24,6 +24,7 @@ endif()
target_link_libraries(%{ProjectName} PRIVATE Qt${QT_VERSION_MAJOR}::%{QtModule}) target_link_libraries(%{ProjectName} PRIVATE Qt${QT_VERSION_MAJOR}::%{QtModule})
include(GNUInstallDirs)
install(TARGETS %{ProjectName} install(TARGETS %{ProjectName}
@if %{MacOSBundle} @if %{MacOSBundle}
BUNDLE DESTINATION . BUNDLE DESTINATION .

View File

@@ -35,6 +35,7 @@ else()
endif() endif()
@endif @endif
include(GNUInstallDirs)
install(TARGETS %{ProjectName} install(TARGETS %{ProjectName}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}

View File

@@ -4,6 +4,7 @@ project(%{ProjectName} LANGUAGES C)
add_executable(%{ProjectName} %{CFileName}) add_executable(%{ProjectName} %{CFileName})
include(GNUInstallDirs)
install(TARGETS %{ProjectName} install(TARGETS %{ProjectName}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}

View File

@@ -7,6 +7,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(%{ProjectName} %{CppFileName}) add_executable(%{ProjectName} %{CppFileName})
include(GNUInstallDirs)
install(TARGETS %{ProjectName} install(TARGETS %{ProjectName}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}

View File

@@ -39,6 +39,7 @@ target_link_libraries(%{TargetName}
PRIVATE Qt6::Quick PRIVATE Qt6::Quick
) )
include(GNUInstallDirs)
install(TARGETS %{TargetName} install(TARGETS %{TargetName}
BUNDLE DESTINATION . BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}

View File

@@ -28,6 +28,7 @@ set_target_properties(%{TargetName} PROPERTIES
target_link_libraries(%{TargetName} target_link_libraries(%{TargetName}
PRIVATE Qt6::Quick) PRIVATE Qt6::Quick)
include(GNUInstallDirs)
install(TARGETS %{TargetName} install(TARGETS %{TargetName}
BUNDLE DESTINATION . BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})

View File

@@ -69,6 +69,7 @@ set_target_properties(%{ProjectName} PROPERTIES
WIN32_EXECUTABLE TRUE WIN32_EXECUTABLE TRUE
) )
include(GNUInstallDirs)
install(TARGETS %{ProjectName} install(TARGETS %{ProjectName}
BUNDLE DESTINATION . BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})

View File

@@ -72,6 +72,7 @@ set_target_properties(%{ProjectName} PROPERTIES
WIN32_EXECUTABLE TRUE WIN32_EXECUTABLE TRUE
) )
include(GNUInstallDirs)
install(TARGETS %{ProjectName} install(TARGETS %{ProjectName}
BUNDLE DESTINATION . BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -2003,10 +2003,20 @@ bool Check::visit(TypeOfExpression *ast)
/// ### Maybe put this into the context as a helper function. /// ### Maybe put this into the context as a helper function.
const Value *Check::checkScopeObjectMember(const UiQualifiedId *id) const Value *Check::checkScopeObjectMember(const UiQualifiedId *id)
{ {
if (!_importsOk) if (!_importsOk)
return nullptr; return nullptr;
if (!id)
return nullptr; // ### error?
if (id->name.isEmpty()) // possible after error recovery
return nullptr;
QString propertyName = id->name.toString();
if (propertyName == "id" && !id->next)
return nullptr; // ### should probably be a special value
QList<const ObjectValue *> scopeObjects = _scopeChain.qmlScopeObjects(); QList<const ObjectValue *> scopeObjects = _scopeChain.qmlScopeObjects();
if (scopeObjects.isEmpty()) if (scopeObjects.isEmpty())
return nullptr; return nullptr;
@@ -2021,24 +2031,9 @@ const Value *Check::checkScopeObjectMember(const UiQualifiedId *id)
return isAttachedProperty; return isAttachedProperty;
}; };
if (! id)
return nullptr; // ### error?
if (id->name.isEmpty()) // possible after error recovery
return nullptr;
QString propertyName = id->name.toString();
if (propertyName == "id" && !id->next)
return nullptr; // ### should probably be a special value
// attached properties // attached properties
bool isAttachedProperty = getAttachedTypes(propertyName); bool isAttachedProperty = getAttachedTypes(propertyName);
if (scopeObjects.isEmpty())
return nullptr;
// global lookup for first part of id // global lookup for first part of id
const Value *value = nullptr; const Value *value = nullptr;
for (int i = scopeObjects.size() - 1; i >= 0; --i) { for (int i = scopeObjects.size() - 1; i >= 0; --i) {
@@ -2053,7 +2048,14 @@ const Value *Check::checkScopeObjectMember(const UiQualifiedId *id)
return nullptr; return nullptr;
if (!value) { if (!value) {
addMessage(ErrInvalidPropertyName, id->identifierToken, propertyName); // We omit M16 messages if the type using ImmediateProperties
// Ideally, we should obtain them through metaobject information
const bool omitMessage = !m_typeStack.isEmpty()
&& ((m_typeStack.last() == "PropertyChanges")
|| m_typeStack.last() == "Binding")
&& !m_idStack.isEmpty() && m_idStack.last().contains(propertyName);
if (!omitMessage)
addMessage(ErrInvalidPropertyName, id->identifierToken, propertyName);
return nullptr; return nullptr;
} }

View File

@@ -5,7 +5,7 @@ add_qtc_library(Tasking OBJECT
SOURCES SOURCES
barrier.cpp barrier.h barrier.cpp barrier.h
concurrentcall.h concurrentcall.h
networkquery.cpp networkquery.cpp networkquery.h
tasking_global.h tasking_global.h
tasktree.cpp tasktree.h tasktree.cpp tasktree.h
EXPLICIT_MOC EXPLICIT_MOC

View File

@@ -82,7 +82,7 @@ public:
"is not reachable in the running tree. " "is not reachable in the running tree. "
"It is possible that no barrier was added to the tree, " "It is possible that no barrier was added to the tree, "
"or the storage is not reachable from where it is referenced. " "or the storage is not reachable from where it is referenced. "
"The WaitForBarrier task will finish with error. "); "The WaitForBarrier task finishes with an error. ");
return SetupResult::StopWithError; return SetupResult::StopWithError;
} }
Barrier *activeSharedBarrier = activeBarrier->barrier(); Barrier *activeSharedBarrier = activeBarrier->barrier();

View File

@@ -138,6 +138,369 @@ private:
Returns the const pointer to the associated \c Task instance. Returns the const pointer to the associated \c Task instance.
*/ */
/*!
\class Tasking::GroupItem
\inheaderfile solutions/tasking/tasktree.h
\inmodule TaskingSolution
\brief GroupItem represents the basic element that may be a part of any
\l {Tasking::Group} {Group}.
GroupItem is a basic element that may be a part of any \l {Tasking::Group} {Group}.
It encapsulates the functionality provided by any GroupItem's subclass.
It is a value type and it is safe to copy the GroupItem instance,
even when it is originally created via the subclass' constructor.
There are four main kinds of GroupItem:
\table
\header
\li GroupItem Kind
\li Brief Description
\row
\li \l CustomTask
\li Defines asynchronous task type and task's start, done, and error handlers.
Aliased with a unique task name, such as, \c ConcurrentCallTask<ResultType>
or \l NetworkQueryTask. Asynchronous tasks are the main reason for using a task tree.
\row
\li \l Group
\li A container for other group items. Since the group is of the GroupItem type,
it's possible to nest it inside another group. The group is seen by its parent
as a single asynchronous task.
\row
\li \l Storage
\li Enables the child tasks of a group to exchange data.
When Storage is placed inside a group, the task tree instantiates
the storage object just before the group is entered,
and destroys it just after the group is finished.
\row
\li Other group control items
\li The items returned by \l {Tasking::parallelLimit()} {parallelLimit()} or
\l {Tasking::workflowPolicy()} {workflowPolicy()} influence the group's behavior.
The items returned by \l {Tasking::onGroupSetup()} {onGroupSetup()},
\l {Tasking::onGroupDone()} {onGroupDone()} or
\l {Tasking::onGroupError()} {onGroupError()} define custom handlers called when
the group starts or ends execution.
\endtable
*/
/*!
\class Tasking::Group
\inheaderfile solutions/tasking/tasktree.h
\inmodule TaskingSolution
\brief Group represents the basic element for composing declarative recipes describing
how to execute and handle a nested tree of asynchronous tasks.
Group is a container for other group items. It encloses child tasks into one unit,
which is seen by the group's parent as a single, asynchronous task.
Since Group is of the GroupItem type, it may also be a child of Group.
Insert child tasks into the group by using aliased custom task names, such as,
\c ConcurrentCallTask<ResultType> or \c NetworkQueryTask:
\code
const Group group {
NetworkQueryTask(...),
ConcurrentCallTask<int>(...)
};
\endcode
The group's behavior may be customized by inserting the items returned by
\l {Tasking::parallelLimit()} {parallelLimit()} or
\l {Tasking::workflowPolicy()} {workflowPolicy()} functions:
\code
const Group group {
parallel,
continueOnError,
NetworkQueryTask(...),
NetworkQueryTask(...)
};
\endcode
The group may contain nested groups:
\code
const Group group {
finishAllAndDone,
NetworkQueryTask(...),
Group {
NetworkQueryTask(...),
Group {
parallel,
NetworkQueryTask(...),
NetworkQueryTask(...),
}
ConcurrentCallTask<QString>(...)
}
};
\endcode
The group may dynamically instantiate a custom storage structure, which may be used for
inter-task data exchange:
\code
struct MyCustomStruct { QByteArray data; };
TreeStorage<MyCustomStruct> storage;
const auto onFirstSetup = [](NetworkQuery &task) { ... };
const auto onFirstDone = [storage](const NetworkQuery &task) {
// storage-> gives a pointer to MyCustomStruct instance,
// created dynamically by the running task tree.
storage->data = task.reply()->readAll();
};
const auto onSecondSetup = [storage](ConcurrentCall<QImage> &task) {
// storage-> gives a pointer to MyCustomStruct. Since the group is sequential,
// the stored MyCustomStruct was already updated inside the onFirstDone handler.
const QByteArray storedData = storage->data;
};
const Group group {
// When the group is entered by a running task tree, it creates MyCustomStruct
// instance dynamically. It is later accessible from all handlers via
// the *storage or storage-> operators.
sequential,
Storage(storage),
NetworkQueryTask(onFirstSetup, onFirstDone),
ConcurrentCallTask<QImage>(onSecondSetup)
};
\endcode
*/
/*!
\fn Group::Group(const QList<GroupItem> &children)
Constructs a group with a given list of \a children.
This constructor is useful when the child items of the group are not known at compile time,
but later, at runtime:
\code
const QStringList sourceList = ...;
QList<GroupItem> groupItems { parallel };
for (const QString &source : sourceList) {
const NetworkQueryTask task(...); // use source for setup handler
groupItems << task;
}
const Group group(groupItems);
\endcode
*/
/*!
\fn Group::Group(std::initializer_list<GroupItem> children)
Constructs a group from std::initializer_list given by \a children.
This constructor is useful when all child items of the group are known at compile time:
\code
const Group group {
finishAllAndDone,
NetworkQueryTask(...),
Group {
NetworkQueryTask(...),
Group {
parallel,
NetworkQueryTask(...),
NetworkQueryTask(...),
}
ConcurrentCallTask<QString>(...)
}
};
\endcode
*/
/*!
\fn GroupItem Group::withTimeout(std::chrono::milliseconds timeout, const GroupEndHandler &handler) const
Attaches \c TimeoutTask to a copy of \c this group, elapsing after \a timeout in milliseconds,
with an optionally provided timeout \a handler, and returns the coupled item.
When the group finishes before \a timeout passes,
the returned item finishes immediately with the group's result.
Otherwise, the \a handler is invoked (if provided), the group is stopped,
and the returned item finishes with an error.
*/
/*!
\class Tasking::CustomTask
\inheaderfile solutions/tasking/tasktree.h
\inmodule TaskingSolution
\brief A class template used for declaring task items and defining their setup,
done, and error handlers.
The CustomTask class template is used inside TaskTree for describing custom task items.
Custom task names are aliased with unique names inside the \l Tasking namespace
via the TASKING_DECLARE_TASK or TASKING_DECLARE_TEMPLATE_TASK macros.
For example, \c ConcurrentCallTask<T> is an alias to the CustomTask that is defined
to work with \c ConcurrentCall<T> as an associated task class.
The following table contains all the built-in tasks and their associated task classes:
\table
\header
\li Aliased Task Name (Tasking Namespace)
\li Associated Task Class
\li Brief Description
\row
\li ConcurrentCallTask<ReturnType>
\li ConcurrentCall<ReturnType>
\li Starts an asynchronous task. Runs in a separate thread.
\row
\li NetworkQueryTask
\li NetworkQuery
\li Sends a network query.
\row
\li TaskTreeTask
\li TaskTree
\li Starts a nested task tree.
\row
\li TimeoutTask
\li \c std::chrono::milliseconds
\li Starts a timer.
\row
\li WaitForBarrierTask
\li MultiBarrier<Limit>
\li Starts an asynchronous task waiting for the barrier to pass.
\endtable
*/
/*!
\typealias CustomTask::Task
Type alias for \c Adapter::Type.
This is the associated task's type.
*/
/*!
\typealias CustomTask::EndHandler
Type alias for \c std::function<void(const Task &)>.
*/
/*!
\fn template <typename Adapter> template <typename SetupHandler> CustomTask<Adapter>::CustomTask<Adapter>(SetupHandler &&setup, const EndHandler &done, const EndHandler &error)
Constructs the CustomTask instance and attaches the \a setup, \a done, and \a error
handlers to the task. When the running task tree is about to start the task,
it instantiates the associated \l Task object, invokes \a setup handler with a \e reference
to the created task, and starts it. When the running task finishes with success or an error,
the task tree invokes \a done or \a error handler, respectively,
with a \e {const reference} to the created task.
The passed \a setup handler is either of the \c std::function<SetupResult(Task &)> or
\c std::function<void(Task &)> type. For example:
\code
static void parseAndLog(const QString &input);
...
const QString input = ...;
const auto onFirstSetup = [input](ConcurrentCall<void> &task) {
if (input == "Skip")
return SetupResult::StopWithDone; // This task won't start, the next one will
if (input == "Error")
return SetupResult::StopWithError; // This task and the next one won't start
task.setConcurrentCallData(parseAndLog, input);
// This task will start, and the next one will start after this one finished with success
return SetupResult::Continue;
};
const auto onSecondSetup = [input](ConcurrentCall<void> &task) {
task.setConcurrentCallData(parseAndLog, input);
};
const Group group {
ConcurrentCallTask<void>(onFirstSetup),
ConcurrentCallTask<void>(onSecondSetup)
};
\endcode
When the passed \a setup handler is of the \c std::function<SetupResult(Task &)> type,
the return value of the handler instructs the running tree on how to proceed after
the handler's invocation is finished. The default return value of SetupResult::Continue
instructs the tree to continue running, i.e. to execute the associated \c Task.
The return value of SetupResult::StopWithDone or SetupResult::StopWithError instructs
the tree to skip the task's execution and finish immediately with success or an error,
respectively.
When the return type is either SetupResult::StopWithDone or SetupResult::StopWithError,
the task's \a done or \a error handler (even if provided) are not called afterwards.
The \a setup handler may be of a shortened form of std::function<void(Task &)>,
i.e. the return value is void. In this case it's assumed that the return value is
SetupResult::Continue by default.
When the running task finishes, one of \a done or \a error handlers is called,
depending on whether it finished with success or an error, respectively.
Both handlers are of std::function<void(const Task &)> type.
\sa onSetup(), onDone(), onError()
*/
/*!
\fn template <typename Adapter> template <typename SetupHandler> CustomTask<Adapter> &CustomTask<Adapter>::onSetup(SetupHandler &&handler)
Attaches the setup \a handler to \c this task.
The \a handler is invoked when the task is about to be started.
This function enables defining the task's details with a
\l {https://en.wikipedia.org/wiki/Fluent_interface}{fluent interface} style:
\code
const auto onQuerySetup = [](NetworkQuery &task) { ... };
const auto onQueryError = [](const NetworkQuery &task) { ... };
const Group group {
NetworkQueryTask(onQuerySetup, {}, onQueryError),
NetworkQueryTask().onSetup(onQuerySetup).onError(onQueryError), // fluent interface style
NetworkQueryTask(onQuerySetup, {}, onQueryError).withTimeout(500ms)
}
\endcode
\sa CustomTask(), onDone(), onError()
*/
/*!
\fn template <typename Adapter> CustomTask<Adapter> &CustomTask<Adapter>::onDone(const EndHandler &handler)
Attaches the done \a handler to \c this task.
The handler is invoked when the task finishes with success.
This function enables defining the task's details with a fluent interface style.
\sa CustomTask(), onSetup(), onError()
*/
/*!
\fn template <typename Adapter> CustomTask<Adapter> &CustomTask<Adapter>::onError(const EndHandler &handler)
Attaches the error \a handler to \c this task.
The handler is invoked when the task finishes with an error.
This function enables defining the task's details with a fluent interface style.
\sa CustomTask(), onSetup(), onDone()
*/
/*!
\fn template <typename Adapter> GroupItem CustomTask<Adapter>::withTimeout(std::chrono::milliseconds timeout, const GroupItem::GroupEndHandler &handler) const
Attaches \c TimeoutTask to a copy of \c this task, elapsing after \a timeout in milliseconds,
with an optionally provided timeout \a handler, and returns the coupled item.
When the task finishes before \a timeout passes,
the returned item finishes immediately with the task's result.
Otherwise, the \a handler is invoked (if provided), the task is stopped,
and the returned item finishes with an error.
\sa onSetup()
*/
/*! /*!
\macro TASKING_DECLARE_TASK(CustomTaskName, TaskAdapterClass) \macro TASKING_DECLARE_TASK(CustomTaskName, TaskAdapterClass)
\relates Tasking \relates Tasking
@@ -158,13 +521,6 @@ private:
For more information on implementing the custom task adapters, refer to \l {Task Adapters}. For more information on implementing the custom task adapters, refer to \l {Task Adapters}.
*/ */
/*!
\class Tasking::GroupItem
\inheaderfile solutions/tasking/tasktree.h
\inmodule TaskingSolution
\brief The GroupItem class represents the basic element for composing nested tree structures.
*/
/*! /*!
\enum Tasking::WorkflowPolicy \enum Tasking::WorkflowPolicy

View File

@@ -321,14 +321,14 @@ public:
using EndHandler = std::function<void(const Task &)>; using EndHandler = std::function<void(const Task &)>;
static Adapter *createAdapter() { return new Adapter; } static Adapter *createAdapter() { return new Adapter; }
CustomTask() : GroupItem({&createAdapter}) {} CustomTask() : GroupItem({&createAdapter}) {}
template <typename SetupFunction> template <typename SetupHandler>
CustomTask(SetupFunction &&function, const EndHandler &done = {}, const EndHandler &error = {}) CustomTask(SetupHandler &&setup, const EndHandler &done = {}, const EndHandler &error = {})
: GroupItem({&createAdapter, wrapSetup(std::forward<SetupFunction>(function)), : GroupItem({&createAdapter, wrapSetup(std::forward<SetupHandler>(setup)),
wrapEnd(done), wrapEnd(error)}) {} wrapEnd(done), wrapEnd(error)}) {}
template <typename SetupFunction> template <typename SetupHandler>
CustomTask &onSetup(SetupFunction &&function) { CustomTask &onSetup(SetupHandler &&handler) {
setTaskSetupHandler(wrapSetup(std::forward<SetupFunction>(function))); setTaskSetupHandler(wrapSetup(std::forward<SetupHandler>(handler)));
return *this; return *this;
} }
CustomTask &onDone(const EndHandler &handler) { CustomTask &onDone(const EndHandler &handler) {
@@ -346,20 +346,20 @@ public:
} }
private: private:
template<typename SetupFunction> template<typename SetupHandler>
static GroupItem::TaskSetupHandler wrapSetup(SetupFunction &&function) { static GroupItem::TaskSetupHandler wrapSetup(SetupHandler &&handler) {
static constexpr bool isDynamic = std::is_same_v<SetupResult, static constexpr bool isDynamic = std::is_same_v<SetupResult,
std::invoke_result_t<std::decay_t<SetupFunction>, typename Adapter::Type &>>; std::invoke_result_t<std::decay_t<SetupHandler>, typename Adapter::Type &>>;
constexpr bool isVoid = std::is_same_v<void, constexpr bool isVoid = std::is_same_v<void,
std::invoke_result_t<std::decay_t<SetupFunction>, typename Adapter::Type &>>; std::invoke_result_t<std::decay_t<SetupHandler>, typename Adapter::Type &>>;
static_assert(isDynamic || isVoid, static_assert(isDynamic || isVoid,
"Task setup handler needs to take (Task &) as an argument and has to return " "Task setup handler needs to take (Task &) as an argument and has to return "
"void or SetupResult. The passed handler doesn't fulfill these requirements."); "void or SetupResult. The passed handler doesn't fulfill these requirements.");
return [=](TaskInterface &taskInterface) { return [=](TaskInterface &taskInterface) {
Adapter &adapter = static_cast<Adapter &>(taskInterface); Adapter &adapter = static_cast<Adapter &>(taskInterface);
if constexpr (isDynamic) if constexpr (isDynamic)
return std::invoke(function, *adapter.task()); return std::invoke(handler, *adapter.task());
std::invoke(function, *adapter.task()); std::invoke(handler, *adapter.task());
return SetupResult::Continue; return SetupResult::Continue;
}; };
}; };

View File

@@ -1607,7 +1607,15 @@ void BoolAspect::setLabelPlacement(BoolAspect::LabelPlacement labelPlacement)
d->m_labelPlacement = labelPlacement; d->m_labelPlacement = labelPlacement;
} }
CheckableDecider BoolAspect::checkableDecider() CheckableDecider BoolAspect::askAgainCheckableDecider()
{
return CheckableDecider(
[this] { return value(); },
[this] { setValue(true); }
);
}
CheckableDecider BoolAspect::doNotAskAgainCheckableDecider()
{ {
return CheckableDecider( return CheckableDecider(
[this] { return !value(); }, [this] { return !value(); },

View File

@@ -223,7 +223,9 @@ public:
void addToLayout(Layouting::LayoutItem &parent) override; void addToLayout(Layouting::LayoutItem &parent) override;
std::function<void(QObject *)> groupChecker(); std::function<void(QObject *)> groupChecker();
Utils::CheckableDecider checkableDecider();
Utils::CheckableDecider askAgainCheckableDecider();
Utils::CheckableDecider doNotAskAgainCheckableDecider();
QAction *action() override; QAction *action() override;

View File

@@ -305,6 +305,8 @@ static void addItemToFlowLayout(FlowLayout *layout, const ResultItem &item)
// layout->addStretch(item.stretch); // layout->addStretch(item.stretch);
// } else if (item.space != -1) { // } else if (item.space != -1) {
// layout->addSpacing(item.space); // layout->addSpacing(item.space);
} else if (item.empty) {
// Nothing to do, but no reason to warn, either
} else if (!item.text.isEmpty()) { } else if (!item.text.isEmpty()) {
layout->addWidget(createLabel(item.text)); layout->addWidget(createLabel(item.text));
} else { } else {

View File

@@ -280,8 +280,10 @@ void TerminalInterface::sendCommand(char c)
void TerminalInterface::killInferiorProcess() void TerminalInterface::killInferiorProcess()
{ {
sendCommand('k'); sendCommand('k');
if (d->stubSocket) if (d->stubSocket) {
d->stubSocket->waitForReadyRead(); d->stubSocket->waitForReadyRead();
emitFinished(-1, QProcess::CrashExit);
}
} }
void TerminalInterface::killStubProcess() void TerminalInterface::killStubProcess()

View File

@@ -27,6 +27,7 @@ const char ANDROID_KIT_NDK[] = "Android.NDK";
const char ANDROID_KIT_SDK[] = "Android.SDK"; const char ANDROID_KIT_SDK[] = "Android.SDK";
const char ANDROID_BUILD_DIRECTORY[] = "android-build"; const char ANDROID_BUILD_DIRECTORY[] = "android-build";
const char ANDROID_APP_PROCESS_DIRECTORY[] = "android-app-process";
const char JAVA_EDITOR_ID[] = "java.editor"; const char JAVA_EDITOR_ID[] = "java.editor";
const char JLS_SETTINGS_ID[] = "Java::JLSSettingsID"; const char JLS_SETTINGS_ID[] = "Java::JLSSettingsID";
const char JAVA_MIMETYPE[] = "text/x-java"; const char JAVA_MIMETYPE[] = "text/x-java";

View File

@@ -138,7 +138,7 @@ void AndroidDebugSupport::start()
FilePath::removeDuplicates(solibSearchPath); FilePath::removeDuplicates(solibSearchPath);
setSolibSearchPath(solibSearchPath); setSolibSearchPath(solibSearchPath);
qCDebug(androidDebugSupportLog).noquote() << "SoLibSearchPath: " << solibSearchPath; qCDebug(androidDebugSupportLog).noquote() << "SoLibSearchPath: " << solibSearchPath;
setSymbolFile(buildDir.pathAppended("app_process")); setSymbolFile(AndroidManager::androidAppProcessDir(target).pathAppended("app_process"));
setSkipExecutableValidation(true); setSkipExecutableValidation(true);
setUseExtendedRemote(true); setUseExtendedRemote(true);
QString devicePreferredAbi = AndroidManager::apkDevicePreferredAbi(target); QString devicePreferredAbi = AndroidManager::apkDevicePreferredAbi(target);

View File

@@ -512,6 +512,13 @@ void AndroidDeployQtStep::runImpl(QPromise<bool> &promise)
itr.value().removeFile(); itr.value().removeFile();
for (auto itr = m_filesToPull.constBegin(); itr != m_filesToPull.constEnd(); ++itr) { for (auto itr = m_filesToPull.constBegin(); itr != m_filesToPull.constEnd(); ++itr) {
const FilePath parentDir = itr.value().parentDir();
if (!parentDir.ensureWritableDir()) {
const QString error = QString("Package deploy: Unable to create directory %1.")
.arg(parentDir.nativePath());
reportWarningOrError(error, Task::Error);
}
runCommand({m_adbPath, runCommand({m_adbPath,
AndroidDeviceInfo::adbSelector(m_serialNumber) AndroidDeviceInfo::adbSelector(m_serialNumber)
<< "pull" << itr.key() << itr.value().nativePath()}); << "pull" << itr.key() << itr.value().nativePath()});
@@ -528,7 +535,7 @@ void AndroidDeployQtStep::runImpl(QPromise<bool> &promise)
void AndroidDeployQtStep::gatherFilesToPull() void AndroidDeployQtStep::gatherFilesToPull()
{ {
m_filesToPull.clear(); m_filesToPull.clear();
const FilePath buildDir = AndroidManager::buildDirectory(target()); const FilePath appProcessDir = AndroidManager::androidAppProcessDir(target());
if (!m_deviceInfo.isValid()) if (!m_deviceInfo.isValid())
return; return;
@@ -538,16 +545,16 @@ void AndroidDeployQtStep::gatherFilesToPull()
const QString preferredAbi = AndroidManager::apkDevicePreferredAbi(target()); const QString preferredAbi = AndroidManager::apkDevicePreferredAbi(target());
if (preferredAbi == ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A if (preferredAbi == ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A
|| preferredAbi == ProjectExplorer::Constants::ANDROID_ABI_X86_64) { || preferredAbi == ProjectExplorer::Constants::ANDROID_ABI_X86_64) {
m_filesToPull["/system/bin/app_process64"] = buildDir / "app_process"; m_filesToPull["/system/bin/app_process64"] = appProcessDir / "app_process";
libDirName = "lib64"; libDirName = "lib64";
linkerName = "linker64"; linkerName = "linker64";
} else { } else {
m_filesToPull["/system/bin/app_process32"] = buildDir / "app_process"; m_filesToPull["/system/bin/app_process32"] = appProcessDir / "app_process";
m_filesToPull["/system/bin/app_process"] = buildDir / "app_process"; m_filesToPull["/system/bin/app_process"] = appProcessDir / "app_process";
} }
m_filesToPull["/system/bin/" + linkerName] = buildDir / linkerName; m_filesToPull["/system/bin/" + linkerName] = appProcessDir / linkerName;
m_filesToPull["/system/" + libDirName + "/libc.so"] = buildDir / "libc.so"; m_filesToPull["/system/" + libDirName + "/libc.so"] = appProcessDir / "libc.so";
for (auto itr = m_filesToPull.constBegin(); itr != m_filesToPull.constEnd(); ++itr) for (auto itr = m_filesToPull.constBegin(); itr != m_filesToPull.constEnd(); ++itr)
qCDebug(deployStepLog).noquote() << "Pulling file from device:" << itr.key() qCDebug(deployStepLog).noquote() << "Pulling file from device:" << itr.key()

View File

@@ -229,6 +229,11 @@ FilePath AndroidManager::androidBuildDirectory(const Target *target)
return buildDirectory(target) / Constants::ANDROID_BUILD_DIRECTORY; return buildDirectory(target) / Constants::ANDROID_BUILD_DIRECTORY;
} }
FilePath AndroidManager::androidAppProcessDir(const Target *target)
{
return buildDirectory(target) / Constants::ANDROID_APP_PROCESS_DIRECTORY;
}
bool AndroidManager::isQt5CmakeProject(const ProjectExplorer::Target *target) bool AndroidManager::isQt5CmakeProject(const ProjectExplorer::Target *target)
{ {
const QtSupport::QtVersion *qt = QtSupport::QtKitAspect::qtVersion(target->kit()); const QtSupport::QtVersion *qt = QtSupport::QtKitAspect::qtVersion(target->kit());

Some files were not shown because too many files have changed in this diff Show More