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
@@ -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."
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
30
dist/changelog/changes-11.0.0.md
vendored
@@ -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
|
||||
--------
|
||||
|
@@ -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"
|
||||
|
BIN
doc/qtcreator/images/extraimages/images/EhJ1eV_6RH8.jpg
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
doc/qtcreator/images/extraimages/images/FTSvDmcAgPI.jpg
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
doc/qtcreator/images/extraimages/images/LnVjI0I7cKs.jpg
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
doc/qtcreator/images/extraimages/images/hOx3dod5-1A.jpg
Normal file
After Width: | Height: | Size: 2.7 KiB |
@@ -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
|
||||
|
Before Width: | Height: | Size: 6.0 KiB |
BIN
doc/qtcreator/images/qtcreator-application-output.webp
Normal file
After Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 9.9 KiB |
BIN
doc/qtcreator/images/qtcreator-compile-output.webp
Normal file
After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 13 KiB |
BIN
doc/qtcreator/images/qtcreator-debugging-helper-options.webp
Normal file
After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 6.2 KiB |
BIN
doc/qtcreator/images/qtcreator-general-messages.webp
Normal file
After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 44 KiB |
BIN
doc/qtcreator/images/qtcreator-installed-plugins.webp
Normal file
After Width: | Height: | Size: 9.0 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 8.5 KiB |
After Width: | Height: | Size: 5.1 KiB |
BIN
doc/qtcreator/images/qtcreator-preferences.webp
Normal file
After Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 14 KiB |
BIN
doc/qtcreator/images/qtcreator-scratch-buffer.webp
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
doc/qtcreator/images/qtcreator-search-results-matches.webp
Normal file
After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 13 KiB |
BIN
doc/qtcreator/images/qtcreator-search-results.webp
Normal file
After Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 19 KiB |
BIN
doc/qtcreator/images/qtcreator-to-do-entries.webp
Normal file
After Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 32 KiB |
@@ -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
|
||||
|
||||
|
@@ -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.
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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.
|
||||
|
||||
|
36
doc/qtcreator/src/howto/creator-how-to-macos.qdoc
Normal 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
|
||||
*/
|
@@ -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
|
||||
*/
|
26
doc/qtcreator/src/howto/creator-how-to-switch-ui-themes.qdoc
Normal 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
|
||||
*/
|
66
doc/qtcreator/src/howto/creator-how-to-view-images.qdoc
Normal 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.
|
||||
*/
|
@@ -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}
|
||||
*/
|
@@ -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
|
||||
*/
|
@@ -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}
|
||||
*/
|
@@ -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)}):
|
||||
|
@@ -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"
|
||||
|
||||
|
@@ -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?}
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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}.
|
||||
*/
|
||||
|
@@ -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.
|
||||
|
||||
|
@@ -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}
|
||||
|
@@ -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}
|
||||
|
||||
|
@@ -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}.
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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}
|
||||
|
@@ -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
|
||||
|
@@ -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}
|
||||
|
@@ -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
|
||||
*/
|
||||
|
@@ -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
|
@@ -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.
|
||||
*/
|
@@ -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
|
||||
*/
|
||||
|
@@ -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
|
||||
|
@@ -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,
|
||||
|
@@ -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),
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
Before Width: | Height: | Size: 102 KiB |
BIN
doc/qtdesignstudio/images/studio-welcome-mode.webp
Normal file
After Width: | Height: | Size: 48 KiB |
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
|
||||
|
@@ -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}
|
||||
|
@@ -24,6 +24,7 @@ endif()
|
||||
|
||||
target_link_libraries(%{ProjectName} PRIVATE Qt${QT_VERSION_MAJOR}::%{QtModule})
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS %{ProjectName}
|
||||
@if %{MacOSBundle}
|
||||
BUNDLE DESTINATION .
|
||||
|
@@ -35,6 +35,7 @@ else()
|
||||
endif()
|
||||
@endif
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS %{ProjectName}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
|
@@ -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}
|
||||
|
@@ -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}
|
||||
|
@@ -39,6 +39,7 @@ target_link_libraries(%{TargetName}
|
||||
PRIVATE Qt6::Quick
|
||||
)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS %{TargetName}
|
||||
BUNDLE DESTINATION .
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
|
@@ -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})
|
||||
|
@@ -69,6 +69,7 @@ set_target_properties(%{ProjectName} PROPERTIES
|
||||
WIN32_EXECUTABLE TRUE
|
||||
)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS %{ProjectName}
|
||||
BUNDLE DESTINATION .
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
|
@@ -72,6 +72,7 @@ set_target_properties(%{ProjectName} PROPERTIES
|
||||
WIN32_EXECUTABLE TRUE
|
||||
)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS %{ProjectName}
|
||||
BUNDLE DESTINATION .
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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();
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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;
|
||||
};
|
||||
};
|
||||
|
@@ -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(); },
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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 {
|
||||
|
@@ -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()
|
||||
|
@@ -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";
|
||||
|
@@ -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);
|
||||
|
@@ -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()
|
||||
|
@@ -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());
|
||||
|