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
instructions:
- 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
maxTimeBetweenOutput: 360
userMessageOnFailure: "Failed to download elfutils package, check logs."
@@ -82,7 +82,7 @@ instructions:
- type: Group
instructions:
- 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
maxTimeBetweenOutput: 360
userMessageOnFailure: "Failed to download elfutils package, check logs."
@@ -92,7 +92,7 @@ instructions:
maxTimeBetweenOutput: 360
userMessageOnFailure: "Failed to extract elfutils package, check logs."
- 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
maxTimeBetweenOutput: 360
userMessageOnFailure: "Failed to download python package, check logs."
@@ -141,7 +141,7 @@ instructions:
maxTimeBetweenOutput: 360
userMessageOnFailure: "Failed to create folder qt_temp, check logs."
- 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
maxTimeBetweenOutput: 360
userMessageOnFailure: "Failed to download python package, check logs."

View File

@@ -7,10 +7,10 @@ instructions:
variableValue: "RelWithDebInfo"
- type: EnvironmentVariable
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
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
variableName: QTC_QT_MODULES
variableValue: "qt5compat qtbase qtdeclarative qtimageformats qtquick3d qtquickcontrols2 qtquicktimeline qtserialport qtshadertools qtsvg qttools qttranslations qtwebengine"
@@ -22,7 +22,7 @@ instructions:
variableValue: 10.14
- type: EnvironmentVariable
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
instructions:
- type: EnvironmentVariable

View File

@@ -52,7 +52,7 @@ instructions:
- type: ChangeDirectory
directory: "{{.BuildDir}}/tqtc-qtsdk/packaging_tools"
- 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
maxTimeInSeconds: 3600
maxTimeBetweenOutput: 360
@@ -72,7 +72,7 @@ instructions:
property: host.os
equals_value: MacOS
- 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
maxTimeInSeconds: 3600
maxTimeBetweenOutput: 360

View File

@@ -118,7 +118,7 @@ Editing
* Fixed that generated functions did not have a `const` qualifier when
required
([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))
* Fixed the handling of C++20 keywords and concepts
* Clangd
@@ -154,8 +154,9 @@ Editing
### Python
* Added the option to create a virtual environment (`venv`) to the Python
interpreter selector and the wizard
* Added the `Create Virtual Environment` option to the Python interpreter
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))
* Fixed that too many progress indicators could be created
([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
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
the `File System` view
([QTCREATORBUG-15981](https://bugreports.qt.io/browse/QTCREATORBUG-15981))
([Documentation](https://doc.qt.io/qtcreator/creator-file-system-view.html))
### CMake
@@ -184,10 +186,13 @@ Projects
[QTCREATORBUG-28904](https://bugreports.qt.io/browse/QTCREATORBUG-28904),
[QTCREATORBUG-28985](https://bugreports.qt.io/browse/QTCREATORBUG-28985),
[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
changes to them
* Added support for `block()` and `endblock()`
* Fixed that CMake Presets were not visible in `Projects` view
([Documentation](https://doc-snapshots.qt.io/qtcreator-11.0/creator-build-settings-cmake-presets.html))
* 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))
* Fixed issues with detecting a configured Qt version when importing a build
([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
`File > New Project > Application (Qt for Python)`
([Documentation](https://doc.qt.io/qtcreator/creator-project-creating.html))
Debugging
---------
@@ -203,6 +209,7 @@ Debugging
* Improved the UI for enabling and disabling debuggers in `Projects > Run >
Debugger settings`
([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
([QTCREATORBUG-28950](https://bugreports.qt.io/browse/QTCREATORBUG-28950))
* Fixed pretty printer for `std::string` for recent `libc++`
@@ -210,8 +217,8 @@ Debugging
### C++
* Added an option for the default number of array elements to show
(`Preferences > Debugger > Locals & Expressions > Default array size`)
* Added the `Default array size` option for setting the default number of array
elements to show in `Preferences > Debugger > Locals & Expressions`
* Fixed debugging in a terminal as the root user
([QTCREATORBUG-27519](https://bugreports.qt.io/browse/QTCREATORBUG-27519))
* CDB
@@ -225,11 +232,12 @@ Debugging
### 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))
* Added an option for disabling static analyzer messages to
`Qt Quick > QML/JS Editing`
* Added the `Use customized static analyzer` option for disabling static analyzer
messages to `Preferences > Qt Quick > QML/JS Editing`
([QTCREATORBUG-29095](https://bugreports.qt.io/browse/QTCREATORBUG-29095))
([Documentation](https://doc.qt.io/qtcreator/creator-checking-code-syntax.html))
Analyzer
--------

View File

@@ -70,4 +70,9 @@ macro.see = "\\sa"
macro.function = "\\fn"
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"

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} += \
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
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
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
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
The following table summarizes the functions that you can use to step through
@@ -984,7 +993,7 @@
> \uicontrol {Debugger} > \uicontrol {Locals & Expressions} >
\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 \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
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
@@ -1375,7 +1384,7 @@
\uicontrol Debugger > \uicontrol {Locals & Expressions}, and enter the
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
can specify \l{https://sourceware.org/gdb/onlinedocs/gdb/Signals.html}
@@ -1586,7 +1595,7 @@
selecting \uicontrol Edit > \uicontrol Preferences > \uicontrol Debugger >
\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
members specified in \c qtcreator\share\qtcreator\debugger\dumper.py.
@@ -2036,7 +2045,7 @@
> \uicontrol Preferences > \uicontrol Debugger > \uicontrol GDB >
\uicontrol {Use automatic symbol cache}.
\image qtcreator-gdb-options.png "GDB preferences"
\image qtcreator-gdb-options.png {GDB preferences}
\section2 Minimizing Number of Breakpoints

View File

@@ -16,15 +16,14 @@
While Linux, \macos, and Windows hosts are supported in principle, Linux is
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
configure \c docker-cli on the development host. \QC automatically detects
\l{Adding Kits}{build and run kit} items, such \l{Adding Debuggers}
{debuggers} and \l{Adding Qt Versions}{Qt versions}, in the Docker container
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
\l{https://docs.docker.com/engine/reference/commandline/pull/}{docker pull}
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
/*!
@@ -699,6 +699,19 @@
\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
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
// **********************************************************************
@@ -11,7 +11,7 @@
\previouspage creator-editor-functions.html
\page creator-coding-navigating.html
\if defined(qtdesignstudio)
\nextpage creator-sidebars.html
\nextpage creator-views.html
\else
\nextpage creator-highlighting.html
\endif
@@ -246,7 +246,12 @@
\endlist
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
@@ -358,13 +363,11 @@
\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
wrong file, select \uicontrol {Project Parts} > \uicontrol {Header Paths}.
\endif
\if defined(qtdesignstudio)
\else
\section1 Related Topics
\list
\li \l{Working with Sidebars}
\li \l{Browsing Project Contents}
\li \l{Viewing Output}
\endlist

View File

@@ -12,6 +12,13 @@
\l{https://github.com/features/copilot}{GitHub Copilot} into \QC.
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
To use the Copilot plugin, you need:
@@ -42,11 +49,11 @@
\li Select \uicontrol Edit > \uicontrol Preferences >
\uicontrol Copilot.
\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
your device, and authorize the GitHub Copilot plugin.
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
Node.js executable.
\li In the \uicontrol {Path to agent.js} field, enter the path to
@@ -56,7 +63,7 @@
make changes.
\endlist
\section1 Pair-Programming with Copilot
\section1 Receiving Suggestions
When you write code in the \l {Working in Edit Mode}{Edit} mode and
\uicontrol {Request completions automatically} is enabled, Copilot
@@ -78,9 +85,11 @@
To apply a suggestion word-by-word, select \uicontrol {Apply Word}
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.
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.
\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.

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
\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
\li \l {Switch between modes}
\li \l {Move between open files}
\li \l {Switch to Edit mode}
\li \l {Find a specific setting}
\li \l {View output}
\li \l {Find keyboard shortcuts}
\li \l {Run \QC from the command line}
\li \l {Show and hide sidebars}
\li \l {Move to symbols}
\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}
\li \l {Find a particular preference}
\li \l {Find keyboard shortcuts}
\li \l {Find menu items on \macos}
\li \l {Set high DPI scaling}
\li \l {Set the number of recent files shown}
\li \l {Show and hide sidebars}
\li \l {Switch between modes}
\li \l {Switch UI themes}
\li \l {View output}
\endlist
\section1 Switch between modes
\section1 Edit Code
\QC uses different modes for different purposes. You can quickly
switch between these modes with the following keyboard shortcuts:
\list
\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
\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
\li \l {Add a license header template for C++ code}
\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
\key Ctrl+Tab.
@@ -68,8 +87,15 @@
(\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
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
\key Esc.
@@ -83,13 +109,29 @@
\li The second press closes secondary windows
\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.
\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
several sources, such as a list of errors and warnings encountered during
@@ -113,8 +155,15 @@
\endlist
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}.
You can see the keyboard shortcut for a menu command in the menu
@@ -124,8 +173,15 @@
\uicontrol Preferences > \uicontrol Environment > \uicontrol Keyboard.
\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
existing \l{Managing Sessions}{session} or project file by entering
@@ -135,23 +191,15 @@
loads the session called \e somesession.
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.
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
\title Move to symbols
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
@@ -166,8 +214,15 @@
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
\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
through projects, files, classes, functions, documentation, and file systems.
@@ -184,8 +239,15 @@
\image qtcreator-locator-customize.webp "Locator preferences"
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.
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"
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.
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 >
\uicontrol Preferences > \uicontrol C++ > \uicontrol {File Naming} >
@@ -223,20 +299,41 @@
\li \c %$VARIABLE%: Contents of environment variable \c{VARIABLE}.
\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
history, press \key {Ctrl+Shift+V} until the clip appears.
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 >
\uicontrol Advanced > \uicontrol {Sort Selected Lines} or press
\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
characters, the matching closing character is added automatically
@@ -253,45 +350,87 @@
\uicontrol {Text Editor} > \uicontrol Completion.
\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}.
*/
\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
> \uicontrol {Text Editor} > \uicontrol Snippets.
\image qtcreator-snippet-modifiers.png "Snippets preferences"
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} >
\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.
\title Write down notes
This creates a new empty text file and saves it to the temporary directory
on your machine. You can use it to write down notes without having to worry
about deleting the file afterwards. The operating system will eventually
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.
To write down notes without having to worry about deleting the file
later, create a new empty text file and save it to a temporary directory
on your machine.
\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 >
\uicontrol Environment > \uicontrol System
> \uicontrol {Maximum number of entries in "Recent Files"}.
\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})
with a function (\c {foo.equals(bar)}):

View File

@@ -130,7 +130,7 @@
\section1 Managing Test Suites and Cases
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"

View File

@@ -10,7 +10,7 @@
This section has answers to some frequently asked questions about \QC.
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
\l{Troubleshooting Debugger}{debugging}.
@@ -22,7 +22,7 @@
Remove the settings files created by \QC.
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?}

View File

@@ -22,7 +22,7 @@
in different build and run \l{glossary-buildandrun-kit}{kits}.
\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

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
// **********************************************************************
@@ -142,55 +142,16 @@
\section1 Managing Plugins
\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
don't need.
You can \l{Enable and disable plugins}{enable} disabled plugins if you
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
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 >
\uicontrol {About Plugins}.
\image qtcreator-installed-plugins.png "Installed Plugins dialog"
\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
To install plugins, select \uicontrol Help > \uicontrol {About Plugins} >
\uicontrol {Install Plugins}.
*/

View File

@@ -30,7 +30,7 @@
Has answers to some frequently asked questions about \QC.
\li \l{How-tos}
\li \l{How-to}
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
// **********************************************************************
@@ -80,21 +80,18 @@
For more information, see \l{Building and Running}.
\li \b {\l{Testing}}
\QC integrates several external native debuggers: GNU
Symbolic Debugger (GDB), Microsoft Console Debugger (CDB), and
internal JavaScript debugger. In the \uicontrol Debug mode, you
can inspect the state of your application while debugging.
\QC integrates several external native debuggers that you can use
to inspect the state of your application while debugging.
Devices have limited memory and CPU power, so
you should use them carefully. \QC integrates Valgrind code
analysis tools for detecting memory leaks and profiling function
execution. In addition, the QML Profiler enables you to profile
Qt Quick applications.
Devices have limited memory and CPU power, so you should use them
carefully. \QC integrates code analysis tools for detecting
memory leaks, profiling function execution, analyzing CPU use,
and eliminating unnecessary complexity of code. Other tools
provide code coverage and visualize trace events.
\QC integrates the \l{Qt Test}, Boost.Test, Catch 2 test,
and Google C++ Testing frameworks for unit testing applications
and libraries. You can use \QC to create, build, and run
autotests.
\QC integrates several testing frameworks for unit testing
applications and libraries. You can use \QC to create, build,
and run autotests.
For more information, see \l{Testing}.
\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
// **********************************************************************
@@ -29,11 +29,11 @@
\li \l{Analyzing Code}
\QC integrates Valgrind code analysis tools for detecting memory
leaks and profiling function execution. You must download and
install them separately to use them from \QC. The QML Profiler is
installed as part of \QC. It enables you to profile your Qt Quick
applications.
Use tools for analyzing C++ and QML code to identify issues in
memory management, CPU usage, coding constructs, and so on. You
must install and configure the tools on your system to use them
from \QC. However, the QML Profiler is installed as part of \QC
for profiling Qt Quick applications.
\li \l{Running Autotests}

View File

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

View File

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

View File

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

View File

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

View File

@@ -26,8 +26,8 @@
\image studio-live-preview.png
\endif
To preview any QML file that belongs to the project, right-click the project
name in the \l Projects view, and select \uicontrol {Preview File}.
To preview any QML file that belongs to the project, right-click the
filename in the \l Projects view, and select \uicontrol {Preview File}.
\if defined(qtdesignstudio)
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
/*!
@@ -8,8 +8,7 @@
\title File System
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.
The \uicontrol {File System} view shows all the files in the file system.
\note Usually, \l{Searching with the Locator}{searching with the locator}
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.
\if defined(qtdesignstudio)
The following image displays the \uicontrol {File System} view in the
\uicontrol Design mode:
\image qtcreator-filesystem-view-design.png "File System view in the Design mode"
\image qtcreator-filesystem-view-design.png {File System view}
\else
\image qtcreator-filesystem-view.webp "File System view in the sidebar"
\image qtcreator-filesystem-view.webp {File System view in the sidebar}
\endif
To move to the root directory of the file system, select \uicontrol Computer
@@ -87,19 +83,11 @@
\li Collapse all open folders.
\endlist
\if defined(qtcreator)
\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
options.
\endif
To manage view contents, select \inlineimage icons/filtericon.png
(\uicontrol Options):
@@ -116,4 +104,5 @@
To stop the synchronization with the file currently open in the
editor, deselect \inlineimage icons/linkicon.png
(\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
/*!
\page creator-sidebars.html
\if defined(qtdesignstudio)
\previouspage creator-coding-navigating.html
\else
\previouspage creator-modes.html
\endif
\nextpage creator-views.html
\page creator-how-to-show-and-hide-sidebars.html
\previouspage creator-how-tos.html
\nextpage creator-known-issues.html
\ingroup creator-how-to-ui
\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
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):
Select views in the sidebar menu (1):
\image qtcreator-sidebar.png
@@ -27,8 +22,8 @@
\list
\li 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
\key Alt+0 (\key Cmd+0 on \macos).
\li 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).
\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
/*!
@@ -13,6 +13,7 @@
\title Projects
The \uicontrol Projects view displays projects in a project tree.
The project tree has a list of all projects open in the current
\l{Managing Sessions}{session}. For each project, the tree visualizes
the build system structure of the project and lists all files that
@@ -23,12 +24,9 @@
or almost anything else in your project.
\if defined(qtdesignstudio)
The following image displays the \uicontrol Projects view in the
\uicontrol Design mode:
\image qtcreator-projects-view-design.png "Projects view in the Design mode"
\image qtcreator-projects-view-design.png {Projects view}
\else
\image qtcreator-projects-view-edit.png "Projects view in the sidebar"
\image qtcreator-projects-view-edit.png {Projects view in the sidebar}
\endif
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},
double-click them in the project tree. Files open in the
appropriate editor, according to the file type. For example, code
source files open in the code editor. Use the \l{Selecting Modes}
{mode selector} to open the current file in another editor.
source files open in the code 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}
that has the actions most commonly needed, right-click an
item in the project tree. For example, through the menu of
@@ -51,6 +52,9 @@
configuration files.
\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
The \uicontrol Projects view has context menus for managing projects,
@@ -58,8 +62,10 @@
projects and subprojects:
\list
\if defined(qtcreator)
\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
\if defined(qtdesignstudio)
\l{Adding Files to Projects}.
@@ -106,18 +112,10 @@
the \l {File System} view. To view a project in it, select
\uicontrol {Show in File System View}.
\if defined(qtcreator)
\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.
\endif
To filter view contents, select \inlineimage icons/filtericon.png
(\uicontrol {Filter Tree}):
@@ -140,7 +138,6 @@
currently opened in the editor, deselect \inlineimage icons/linkicon.png
(\uicontrol {Synchronize with Editor}).
\if defined(qtcreator)
Some build systems support adding and removing files to a project in \QC
(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.
@@ -152,8 +149,5 @@
from the version control system in brackets after the project name.
\QC currently implements this for Git (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
*/

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
// **********************************************************************
@@ -11,109 +11,95 @@
\page creator-quick-tour.html
\if defined(qtdesignstudio)
\previouspage {Tutorials}
\nextpage creator-using-qt-quick-designer.html
\else
\previouspage creator-overview.html
\nextpage creator-views.html
\endif
\nextpage creator-modes.html
\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)
\image qtcreator-breakdown.png
\else
\image studio-welcome-mode.png
\endif
When you start \QC, it opens to the \uicontrol Welcome mode.
\if defined(qtcreator)
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).
\image qtcreator-breakdown.png {Welcome mode}
Are you ready to build the application for particular hardware or (5)
run (3) or debug (4) it on a device? Use the kit selector (2) to select
the appropriate \l{glossary-buildandrun-kit}{kit}. The task bar (7)
displays output from these actions.
\table
\header
\li Number
\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?
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
To see where the above controls are in the UI, select
\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
\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
\youtube hOx3dod5-1A
\section1 What's New?
For information about new features and bug fixes in each \QC release,
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
\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:
\else
\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
When you start \QC, it opens to the \uicontrol Welcome mode, where you can:
\list
\li Open recent projects
\li Create and open projects
\li Open tutorials and example projects
\li Read news from the online community and Qt blogs
\li Create or manage a Qt Account
\endlist
\image studio-welcome-mode.webp {Welcome mode}
\endif
\if defined(qtdesignstudio)
\section1 Customizing the Menu
@@ -134,227 +120,25 @@
You need to restart \QDS to apply changes made to these settings.
\endif
\section1 Customizing the UI
\section1 Switching UI Themes
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:
The following topics describe how to customize the UI:
\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.
\li \l {Find menu items on \macos}
\li \l {Set high DPI scaling}
\li \l {Switch UI themes}
\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
\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"
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
\list
\li \l {Export SVG images}
\li \l {View images}
\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
*/
@@ -370,9 +154,9 @@
\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
@@ -410,7 +194,12 @@
\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"
@@ -575,7 +364,7 @@
In \uicontrol{Search Results}, you can search through projects, files on
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
searches from the history.
@@ -583,7 +372,7 @@
The figure below shows an example search result for all
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
\l {Finding and Replacing}.
@@ -593,7 +382,7 @@
\uicontrol{Application Output} displays the status of a program when
you execute it, and the debug output.
\image qtcreator-application-output.png
\image qtcreator-application-output.webp {Application Output}
\if defined(qtcreator)
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
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
code editor.
@@ -770,13 +559,13 @@
subproject. Click the icons on the toolbar to show only the selected
keywords.
\image qtcreator-todo-pane.png
\image qtcreator-to-do-entries.webp {To-Do Entries}
To add keywords, select \uicontrol Edit > \uicontrol Preferences >
\uicontrol {To-Do} > \uicontrol Add. Set an icon and a line background color
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
\uicontrol Edit.
@@ -793,7 +582,7 @@
To exclude files from scanning, select \uicontrol {Project Settings} >
\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
\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
/*!
\page creator-views.html
\previouspage creator-sidebars.html
\if defined(qtdesignstudio)
\previouspage creator-coding-navigating.html
\nextpage creator-output-panes.html
\else
\previouspage creator-quick-tour.html
\nextpage creator-projects-view.html
\endif
\title Browsing Project Contents
You can organize \QC views in \l {Working with Sidebars}{sidebars} or as
\if defined(qtdesignstudio)
\l {Managing Workspaces}{workspaces},
You can organize \QDS views as \l {Managing Workspaces}{workspaces}.
\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
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}
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
\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
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.
\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

View File

@@ -87,19 +87,75 @@
element. You can also add descriptive text to the UI that is always
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
case, use book style capitalization and do not add a period after the tool
tip.
\image qtcreator-tooltip.png {Tooltip}
Tooltips can also contain full sentences. Try to make them as short and
concise as possible, while still making them grammatically correct. Use
sentence style capitalization and punctuation as you would for any
sentence.
\section3 Other Tooltips
Tooltips can also contain full sentences.
\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
In Qt Designer, use plain text for tooltips. For extra formatting, write
@@ -166,9 +222,11 @@
\section3 Checking Book Style Capitalization
You can use the to-title-case.js script in the \c{\doc\titlecase}
folder to check book style capitalization of UI text or headings in
documentation:
If necessary, use an online \l{https://titlecaseconverter.com/}
{Title Case Converter} to check book style capitalization
of UI text or headings in documentation.
Or, use the to-title-case.js script in the \c{\doc\titlecase} folder:
\list 1

View File

@@ -54,6 +54,7 @@ excludedirs += ../../qtcreator/examples/accelbubble \
../../qtcreator/src/python \
../../qtcreator/src/qnx \
../../qtcreator/src/qtquick/creator-only \
../../qtcreator/src/user-interface/creator-only \
../../qtcreator/src/vcs/creator-only \
../../qtcreator/src/widgets \
../../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"
Read more about modes:
The mode selector is hidden by default.
\list
\li \l{Selecting Modes}
\li \l{Design Views}
\endlist
To show the mode selector, go to \uicontrol Views >
\uicontrol {Mode Selector Style} and select \uicontrol {Icons and Text}
or \uicontrol {Icons Only}.
\section1 Project
\target glossary-project

View File

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

View File

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

View File

@@ -1386,7 +1386,7 @@ class DumperBase():
self.putExpandable()
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]
self.putType(typeName)
self.putItemCount(n)

View File

@@ -755,15 +755,15 @@ class Dumper(DumperBase):
qtVersionAndNamespace = None
try:
qtVersionAndNamespace = self.fetchQtVersionAndNamespace()
DumperBase.warn("Detected Qt Version: 0x%0x (namespace='%s')" %
(qtVersionAndNamespace[1], qtVersionAndNamespace[0] or "no namespace"))
self.report("Detected Qt Version: 0x%0x (namespace='%s')" %
(qtVersionAndNamespace[1], qtVersionAndNamespace[0] or "no namespace"))
except Exception as e:
DumperBase.warn('[lldb] Error detecting Qt version: %s' % e)
try:
self.fetchInternalFunctions()
DumperBase.warn('Found function QObject::property: 0x%0x' % self.qtPropertyFunc)
DumperBase.warn('Found function QObject::customEvent: 0x%0x' % self.qtCustomEventFunc)
self.report('Found function QObject::property: 0x%0x' % self.qtPropertyFunc)
self.report('Found function QObject::customEvent: 0x%0x' % self.qtCustomEventFunc)
except Exception as 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)
endif ()
include(GNUInstallDirs)
install(TARGETS %{ProjectName}App
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -72,6 +72,7 @@ set_target_properties(%{ProjectName} PROPERTIES
WIN32_EXECUTABLE TRUE
)
include(GNUInstallDirs)
install(TARGETS %{ProjectName}
BUNDLE DESTINATION .
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.
const Value *Check::checkScopeObjectMember(const UiQualifiedId *id)
{
if (!_importsOk)
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();
if (scopeObjects.isEmpty())
return nullptr;
@@ -2021,24 +2031,9 @@ const Value *Check::checkScopeObjectMember(const UiQualifiedId *id)
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
bool isAttachedProperty = getAttachedTypes(propertyName);
if (scopeObjects.isEmpty())
return nullptr;
// global lookup for first part of id
const Value *value = nullptr;
for (int i = scopeObjects.size() - 1; i >= 0; --i) {
@@ -2053,7 +2048,14 @@ const Value *Check::checkScopeObjectMember(const UiQualifiedId *id)
return nullptr;
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;
}

View File

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

View File

@@ -82,7 +82,7 @@ public:
"is not reachable in the running tree. "
"It is possible that no barrier was added to the tree, "
"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;
}
Barrier *activeSharedBarrier = activeBarrier->barrier();

View File

@@ -138,6 +138,369 @@ private:
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)
\relates Tasking
@@ -158,13 +521,6 @@ private:
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

View File

@@ -321,14 +321,14 @@ public:
using EndHandler = std::function<void(const Task &)>;
static Adapter *createAdapter() { return new Adapter; }
CustomTask() : GroupItem({&createAdapter}) {}
template <typename SetupFunction>
CustomTask(SetupFunction &&function, const EndHandler &done = {}, const EndHandler &error = {})
: GroupItem({&createAdapter, wrapSetup(std::forward<SetupFunction>(function)),
template <typename SetupHandler>
CustomTask(SetupHandler &&setup, const EndHandler &done = {}, const EndHandler &error = {})
: GroupItem({&createAdapter, wrapSetup(std::forward<SetupHandler>(setup)),
wrapEnd(done), wrapEnd(error)}) {}
template <typename SetupFunction>
CustomTask &onSetup(SetupFunction &&function) {
setTaskSetupHandler(wrapSetup(std::forward<SetupFunction>(function)));
template <typename SetupHandler>
CustomTask &onSetup(SetupHandler &&handler) {
setTaskSetupHandler(wrapSetup(std::forward<SetupHandler>(handler)));
return *this;
}
CustomTask &onDone(const EndHandler &handler) {
@@ -346,20 +346,20 @@ public:
}
private:
template<typename SetupFunction>
static GroupItem::TaskSetupHandler wrapSetup(SetupFunction &&function) {
template<typename SetupHandler>
static GroupItem::TaskSetupHandler wrapSetup(SetupHandler &&handler) {
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,
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,
"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.");
return [=](TaskInterface &taskInterface) {
Adapter &adapter = static_cast<Adapter &>(taskInterface);
if constexpr (isDynamic)
return std::invoke(function, *adapter.task());
std::invoke(function, *adapter.task());
return std::invoke(handler, *adapter.task());
std::invoke(handler, *adapter.task());
return SetupResult::Continue;
};
};

View File

@@ -1607,7 +1607,15 @@ void BoolAspect::setLabelPlacement(BoolAspect::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(
[this] { return !value(); },

View File

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

View File

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

View File

@@ -280,8 +280,10 @@ void TerminalInterface::sendCommand(char c)
void TerminalInterface::killInferiorProcess()
{
sendCommand('k');
if (d->stubSocket)
if (d->stubSocket) {
d->stubSocket->waitForReadyRead();
emitFinished(-1, QProcess::CrashExit);
}
}
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_BUILD_DIRECTORY[] = "android-build";
const char ANDROID_APP_PROCESS_DIRECTORY[] = "android-app-process";
const char JAVA_EDITOR_ID[] = "java.editor";
const char JLS_SETTINGS_ID[] = "Java::JLSSettingsID";
const char JAVA_MIMETYPE[] = "text/x-java";

View File

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

View File

@@ -512,6 +512,13 @@ void AndroidDeployQtStep::runImpl(QPromise<bool> &promise)
itr.value().removeFile();
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,
AndroidDeviceInfo::adbSelector(m_serialNumber)
<< "pull" << itr.key() << itr.value().nativePath()});
@@ -528,7 +535,7 @@ void AndroidDeployQtStep::runImpl(QPromise<bool> &promise)
void AndroidDeployQtStep::gatherFilesToPull()
{
m_filesToPull.clear();
const FilePath buildDir = AndroidManager::buildDirectory(target());
const FilePath appProcessDir = AndroidManager::androidAppProcessDir(target());
if (!m_deviceInfo.isValid())
return;
@@ -538,16 +545,16 @@ void AndroidDeployQtStep::gatherFilesToPull()
const QString preferredAbi = AndroidManager::apkDevicePreferredAbi(target());
if (preferredAbi == ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A
|| 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";
linkerName = "linker64";
} else {
m_filesToPull["/system/bin/app_process32"] = buildDir / "app_process";
m_filesToPull["/system/bin/app_process"] = buildDir / "app_process";
m_filesToPull["/system/bin/app_process32"] = appProcessDir / "app_process";
m_filesToPull["/system/bin/app_process"] = appProcessDir / "app_process";
}
m_filesToPull["/system/bin/" + linkerName] = buildDir / linkerName;
m_filesToPull["/system/" + libDirName + "/libc.so"] = buildDir / "libc.so";
m_filesToPull["/system/bin/" + linkerName] = appProcessDir / linkerName;
m_filesToPull["/system/" + libDirName + "/libc.so"] = appProcessDir / "libc.so";
for (auto itr = m_filesToPull.constBegin(); itr != m_filesToPull.constEnd(); ++itr)
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;
}
FilePath AndroidManager::androidAppProcessDir(const Target *target)
{
return buildDirectory(target) / Constants::ANDROID_APP_PROCESS_DIRECTORY;
}
bool AndroidManager::isQt5CmakeProject(const ProjectExplorer::Target *target)
{
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