Merge remote-tracking branch 'origin/4.12' into qds-1.59

Change-Id: I39a979aba39c735ab6885808b6371e5c8c02d37b
This commit is contained in:
Tim Jenssen
2020-04-22 09:32:07 +02:00
182 changed files with 14405 additions and 7951 deletions

View File

@@ -3,10 +3,10 @@ name: CMake Build Matrix
on: [push, pull_request] on: [push, pull_request]
env: env:
QT_VERSION: 5.14.1 QT_VERSION: 5.14.2
CLANG_VERSION: 80 CLANG_VERSION: 80
CMAKE_VERSION: 3.16.3 CMAKE_VERSION: 3.17.0
NINJA_VERSION: 1.9.0 NINJA_VERSION: 1.10.0
BUILD_TYPE: Release BUILD_TYPE: Release
CCACHE_VERSION: 3.7.7 CCACHE_VERSION: 3.7.7
GOOGLETEST_VERSION: 1.10.0 GOOGLETEST_VERSION: 1.10.0

View File

@@ -719,6 +719,7 @@ function(add_qtc_plugin target_name)
string(REPLACE "$$QTCREATOR_VERSION" "\${IDE_VERSION}" plugin_json_in ${plugin_json_in}) string(REPLACE "$$QTCREATOR_VERSION" "\${IDE_VERSION}" plugin_json_in ${plugin_json_in})
string(REPLACE "$$QTCREATOR_COMPAT_VERSION" "\${IDE_VERSION_COMPAT}" plugin_json_in ${plugin_json_in}) string(REPLACE "$$QTCREATOR_COMPAT_VERSION" "\${IDE_VERSION_COMPAT}" plugin_json_in ${plugin_json_in})
string(REPLACE "$$QTCREATOR_COPYRIGHT_YEAR" "\${IDE_COPYRIGHT_YEAR}" plugin_json_in ${plugin_json_in}) string(REPLACE "$$QTCREATOR_COPYRIGHT_YEAR" "\${IDE_COPYRIGHT_YEAR}" plugin_json_in ${plugin_json_in})
string(REPLACE "$$QTC_PLUGIN_REVISION" "\${QTC_PLUGIN_REVISION}" plugin_json_in ${plugin_json_in})
string(REPLACE "$$dependencyList" "\${IDE_PLUGIN_DEPENDENCY_STRING}" plugin_json_in ${plugin_json_in}) string(REPLACE "$$dependencyList" "\${IDE_PLUGIN_DEPENDENCY_STRING}" plugin_json_in ${plugin_json_in})
if(_arg_PLUGIN_JSON_IN) if(_arg_PLUGIN_JSON_IN)
#e.g. UPDATEINFO_EXPERIMENTAL_STR=true #e.g. UPDATEINFO_EXPERIMENTAL_STR=true

View File

@@ -57,6 +57,8 @@ Editing
* Updated to Qt 5.15 parser (QTCREATORBUG-23591) * Updated to Qt 5.15 parser (QTCREATORBUG-23591)
* Improved support for multiple imports into same namespace (QTCREATORBUG-15684) * Improved support for multiple imports into same namespace (QTCREATORBUG-15684)
* Added scanning of `app.qmltypes` and `lib.qmltypes` for type information * Added scanning of `app.qmltypes` and `lib.qmltypes` for type information
* Fixed highlighting for new keywords in Qt 5.15
* Fixed reading of `qmltypes` from Qt 5.15 (QTCREATORBUG-23855)
### Python ### Python
@@ -92,15 +94,18 @@ Projects
* Improved renaming of files (QTCREATORBUG-19257) * Improved renaming of files (QTCREATORBUG-19257)
* Fixed handling of `object_parallel_to_source` (QTCREATORBUG-18136) * Fixed handling of `object_parallel_to_source` (QTCREATORBUG-18136)
* Fixed crash with circular includes (QTCREATORBUG-23567) * Fixed crash with circular includes (QTCREATORBUG-23567)
* Fixed issue with renaming files (QTCREATORBUG-23720)
### CMake ### CMake
* Improved handling of `source_group` (QTCREATORBUG-23372) * Improved handling of `source_group` (QTCREATORBUG-23372)
* Added support for `Add build library search path to LD_LIBRARY_PATH` (QTCREATORBUG-23464) * Added support for `Add build library search path to LD_LIBRARY_PATH` (QTCREATORBUG-23464)
* Added automatic registration of CMake documentation, if available (QTCREATORBUG-21338) * Added automatic registration of CMake documentation, if available (QTCREATORBUG-21338)
* Fixed that `.cmake` directory was created in project source directory (QTCREATORBUG-23816)
* Fixed issues with `snap` on Ubuntu Linux (QTCREATORBUG-23376) * Fixed issues with `snap` on Ubuntu Linux (QTCREATORBUG-23376)
* Fixed handling of `Enable QML` in debugger settings (QTCREATORBUG-23541) * Fixed handling of `Enable QML` in debugger settings (QTCREATORBUG-23541)
* Fixed unneeded reparsing of files * Fixed unneeded reparsing of files
* Fixed code model issues with precompiled headers (QTCREATORBUG-22888)
### Qbs ### Qbs
@@ -111,6 +116,7 @@ Projects
### Python ### Python
* Added option to disable buffered output (QTCREATORBUG-23539) * Added option to disable buffered output (QTCREATORBUG-23539)
* Added support for PySide 5.15 to wizards (QTCREATORBUG-23824)
### Generic ### Generic
@@ -164,6 +170,7 @@ Qt Quick Designer
* Added support for annotations (QDS-39) * Added support for annotations (QDS-39)
* Fixed dragging of keyframes in curve editor (QDS-1405) * Fixed dragging of keyframes in curve editor (QDS-1405)
* Fixed crash when selecting icon (QTCREATORBUG-23773) * Fixed crash when selecting icon (QTCREATORBUG-23773)
* Fixed missing import options (QDS-1592)
Version Control Systems Version Control Systems
----------------------- -----------------------
@@ -212,7 +219,10 @@ Platforms
* Added support for Android 11 with API level 30 * Added support for Android 11 with API level 30
* Improved examples browser to only show items tagged with `android` (QTBUG-80716) * Improved examples browser to only show items tagged with `android` (QTBUG-80716)
* Improved manifest editor (QTCREATORBUG-23283) * Improved manifest editor (QTCREATORBUG-23283)
* Fixed issues with latest SDK r29 (QTCREATORBUG-23726)
* Fixed several issues with AVD manager (QTCREATORBUG-23284, QTCREATORBUG-23448) * Fixed several issues with AVD manager (QTCREATORBUG-23284, QTCREATORBUG-23448)
* Fixed that some essential packages were not installed (QTCREATORBUG-23829)
* Fixed that ABI selection in build configuration did not persist (QTCREATORBUG-23756)
### iOS ### iOS
@@ -231,7 +241,10 @@ Platforms
### MCU ### MCU
* Added auto-registration of documentation (UL-1685) * Added auto-registration of documentation and examples (UL-1685, UL-1218)
* Switched to MCUXpresso IDE instead of SEGGER JLink for NXP kits (QTCREATORBUG-23821)
* Fixed issues with desktop kit (QTCREATORBUG-23820)
* Fixed issues with RH850 (QTCREATORBUG-23822)
Credits for these changes go to: Credits for these changes go to:
-------------------------------- --------------------------------

View File

@@ -6,5 +6,11 @@
<true/> <true/>
<key>com.apple.security.cs.disable-library-validation</key> <key>com.apple.security.cs.disable-library-validation</key>
<true/> <true/>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.automation.apple-events</key>
<true/>
</dict> </dict>
</plist> </plist>

View File

@@ -35,7 +35,8 @@ examples.fileextensions += *.qml *.svg
HTML.extraimages = ../../config/images/commercial.png HTML.extraimages = ../../config/images/commercial.png
qhp.QtCreator.extraFiles = ../../config/images/commercial.png qhp.QtCreator.extraFiles = ../../config/images/commercial.png
depends += qtwidgets \ depends += qtandroidextras\
qtwidgets \
qtcmake \ qtcmake \
qtcore \ qtcore \
qtqml \ qtqml \

View File

@@ -1,2 +1,10 @@
These forms are processed at run-time to produce dynamically-generated user interfaces. In order to generate a form at run-time, a resource file containing a .ui file is needed. Applications that use the form handling classes need to be configured to be built against the QtUiTools module. This is done by including the following declaration in a qmake project file to ensure that the application is compiled and linked appropriately. A form loader object, provided by the QUiLoader class, is used to construct the user interface. This user interface IDE Overview
can be retrieved from any QIODevice; for example, a QFile object can be used to obtain a form stored in a project's resources. The QUiLoader::load() function takes the user interface description contained in the file and constructs the form widget.
Qt Creator is an integrated development environment (IDE) that provides you
with tools to design and develop applications with the Qt application framework.
Qt is designed for developing applications and user interfaces once and
deploying them to several desktop, embedded, and mobile operating systems or web
browsers (experimental). Qt Creator provides you with tools for accomplishing
your tasks throughout the whole application development life-cycle, from
creating a project to deploying the application to the target platforms.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 KiB

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -319,8 +319,8 @@
\li In the \uicontrol Permissions field, you can specify the permissions that your \li In the \uicontrol Permissions field, you can specify the permissions that your
application needs. Starting from Android 6.0 (API 23), permissions have to be application needs. Starting from Android 6.0 (API 23), permissions have to be
requested at runtime (See \l{QtAndroidExtras}{requestPermissionsSync} or requested at runtime (see \l{QtAndroid::requestPermissionsSync()} or
\l{QtAndroidExtras}{requestPermissions}). For lower Android API levels, \l{QtAndroid::requestPermissions()}). For lower Android API levels,
users are asked to grant the permissions when they install the application. users are asked to grant the permissions when they install the application.
Android OS then grants the application access to the appropriate data and features. Android OS then grants the application access to the appropriate data and features.

View File

@@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2019 The Qt Company Ltd. ** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/ ** Contact: https://www.qt.io/licensing/
** **
** This file is part of the Qt Creator documentation. ** This file is part of the Qt Creator documentation.
@@ -124,6 +124,15 @@
To switch between Windows line endings (CRLF) and Unix line endings (LF), To switch between Windows line endings (CRLF) and Unix line endings (LF),
select the ending style on the editor toolbar (6). select the ending style on the editor toolbar (6).
To set the line endings to use for all projects by default, select
\uicontrol Tools > \uicontrol Options > \uicontrol {Text Editor} >
\uicontrol Behavior, and then select the ending style in the
\uicontrol {Default line endings} field.
To set the line endings to use for a project, select \uicontrol Projects >
\uicontrol {Project Settings} > \uicontrol Editor. For more information,
see \l {Specifying Editor Settings}.
\section1 Splitting the Editor View \section1 Splitting the Editor View
Split the editor view or open the editor in a new window when you want to Split the editor view or open the editor in a new window when you want to

View File

@@ -76,6 +76,25 @@
To switch to the editor context when you close the last help page, select To switch to the editor context when you close the last help page, select
the \uicontrol {Return to editor on closing the last page} check box. the \uicontrol {Return to editor on closing the last page} check box.
\section1 Selecting the Help Viewer Backend
The help viewer backend determines the style sheet that is used to display
the help files. A help viewer backend that is based on the \l {QTextBrowser}
is used by default. However, it has several issues that have been fixed when
using litehtml as the help viewer backend.
On \macos, you can also use a help viewer backend that is based on the
system WebView component.
To switch the help viewer backend:
\list 1
\li Select \uicontrol Tools > \uicontrol Options > \uicontrol Help >
\uicontrol General.
\li In the \uicontrol {Viewer backend} field, select a viewer backend.
\li Reload the help page to take the new backend to use.
\endlist
\section1 Viewing Function Tooltips \section1 Viewing Function Tooltips
To hide function tooltips by default, select \uicontrol Tools > To hide function tooltips by default, select \uicontrol Tools >

View File

@@ -213,7 +213,7 @@
\b {How can I make use of my multi-core CPU with \QC?} \b {How can I make use of my multi-core CPU with \QC?}
On Linux and \macos, go to \uicontrol Project mode, select your configuration On Linux and \macos, go to \uicontrol Projects mode, select your configuration
in the \uicontrol {Build Settings}, locate the \uicontrol {Build Steps}, and add the in the \uicontrol {Build Settings}, locate the \uicontrol {Build Steps}, and add the
following value, where \c{<num>} is the amount of cores in your CPU: following value, where \c{<num>} is the amount of cores in your CPU:
\c{-j <num>} \c{-j <num>}

View File

@@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2018 The Qt Company Ltd. ** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/ ** Contact: https://www.qt.io/licensing/
** **
** This file is part of the Qt Creator documentation. ** This file is part of the Qt Creator documentation.
@@ -43,7 +43,7 @@
You can specify settings for deploying applications to generic Linux devices You can specify settings for deploying applications to generic Linux devices
in the project .pro file. You can view the settings in the in the project .pro file. You can view the settings in the
\uicontrol {Run Settings}. \uicontrol Projects mode, in \uicontrol {Run Settings}.
\image qtcreator-embedded-linux-deployment-overview.png "Deploy to device" \image qtcreator-embedded-linux-deployment-overview.png "Deploy to device"

View File

@@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2017 The Qt Company Ltd. ** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/ ** Contact: https://www.qt.io/licensing/
** **
** This file is part of the Qt Creator documentation. ** This file is part of the Qt Creator documentation.
@@ -45,8 +45,8 @@
\image qtcreator-run-settings-linux.png "Run settings for Linux-based devices" \image qtcreator-run-settings-linux.png "Run settings for Linux-based devices"
You can specify command line arguments to pass to your application in the You can specify arguments to pass to your application in the
\uicontrol Arguments field. \uicontrol {Command line arguments} field.
//! [run settings linux] //! [run settings linux]
*/ */

View File

@@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2018 The Qt Company Ltd. ** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/ ** Contact: https://www.qt.io/licensing/
** **
** This file is part of the Qt Creator documentation. ** This file is part of the Qt Creator documentation.
@@ -37,7 +37,7 @@
\title Deploying to Devices \title Deploying to Devices
Deploy configurations in the \uicontrol Project mode Deploy configurations in the \uicontrol Projects mode
\uicontrol {Run Settings} handle the packaging of the application as an \uicontrol {Run Settings} handle the packaging of the application as an
executable and copying it to a location you want to run the executable at. executable and copying it to a location you want to run the executable at.
The files can be copied to a location in the file system of the development The files can be copied to a location in the file system of the development

View File

@@ -121,11 +121,5 @@
\endtable \endtable
* See \l{Running on QNX Devices} for limitations. * See \l{Running on QNX Devices} for limitations.
\note Madde support has been removed from \QC 3.0. To develop for Maemo or Harmattan,
use \QC 2.8.
\note BlackBerry 10 support has been removed from \QC 3.5. Use \QC 3.4 instead.
//! [target platforms] //! [target platforms]
*/ */

View File

@@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2018 The Qt Company Ltd. ** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/ ** Contact: https://www.qt.io/licensing/
** **
** This file is part of the Qt Creator documentation. ** This file is part of the Qt Creator documentation.
@@ -59,15 +59,15 @@
\image qtcreator-gs-build-example-open.png "Selecting an example" \image qtcreator-gs-build-example-open.png "Selecting an example"
If no examples are listed, check that a \l{Adding Qt Versions} If no examples are listed, check that a \l{Adding Qt Versions}
{Qt version} is installed and configured. {Qt version} (2) is installed and configured. If you select a Qt
for Android or iOS, only the examples tested for Android or iOS
are listed.
\li Select an example in the list of examples. \li Select an example in the list of examples.
You can also search for examples. Enter the \uicontrol android or You can also use tags (3) to filter examples. For instance, enter
\uicontrol ios keyword in the search field (2) to list all the the \uicontrol Boot2Qt tag (commercial only) in the search field
examples tested for Android or iOS. To list examples that you can (4) to list examples that you can run on embedded devices.
run on embedded devices, enter the \uicontrol Boot2Qt keyword in the
search field (commercial only).
\li To check that the application code can be compiled and linked for a \li To check that the application code can be compiled and linked for a
device, click the \uicontrol {Kit Selector} and select a device, click the \uicontrol {Kit Selector} and select a

View File

@@ -101,25 +101,24 @@
\section1 Example of Adding Internal Libraries \section1 Example of Adding Internal Libraries
The following example describes how to add a statically linked internal To add an internal library to your project:
library to your project.
\list 1 \list 1
\li Choose \uicontrol File > \uicontrol {New File or Project} > \li Select \uicontrol File > \uicontrol {New File or Project} >
\uicontrol Library > \uicontrol {C++ Library} to create the library. \uicontrol Library > \uicontrol {C++ Library}.
The \uicontrol {Introduction and Product Location} dialog opens. \li Select \uicontrol Choose to open the \uicontrol {Project Location}
dialog.
\image qtcreator-add-library-wizard-ex-1.png "Introduction and Product Location dialog" \image qtcreator-add-library-wizard-ex-1.png "Project Location dialog"
\li In the \uicontrol Type field, select \uicontrol {Statically Linked Library}.
\li In the \uicontrol Name field, give a name for the library. For example, \li In the \uicontrol Name field, give a name for the library. For example,
\b mylib. \b mylib.
\li Follow the instructions of the wizard until you get to the \li Follow the instructions of the wizard until you get to the
\uicontrol {Project Management} dialog. In the \uicontrol {Add to project} \uicontrol {Project Management} dialog. In the
\uicontrol {Add as a subproject to project}
list, select a project. For example, \b myapp. list, select a project. For example, \b myapp.
\li In the \uicontrol Projects view, right-click the project name to open the \li In the \uicontrol Projects view, right-click the project name to open the
@@ -127,9 +126,10 @@
\uicontrol {Add Library} > \uicontrol {Internal Library} > \uicontrol {Add Library} > \uicontrol {Internal Library} >
\uicontrol Next. \uicontrol Next.
\li In the \uicontrol Library field, select \b mylib and click \uicontrol Next. \li In the \uicontrol Library field, select \b mylib, and then select
\uicontrol Next.
\li Click \uicontrol Finish to add the following library declaration to the \li Select \uicontrol Finish to add the following library declaration to the
project file: project file:
\code \code

View File

@@ -1,7 +1,7 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2019 The Qt Company Ltd. ** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/ ** Contact: https://www.qt.io/licensing/
** **
** This file is part of the Qt Creator documentation. ** This file is part of the Qt Creator documentation.
@@ -43,7 +43,7 @@
to enter the information. If you created the project by using another \QC to enter the information. If you created the project by using another \QC
instance, \QC asks whether you want to use the old settings. The settings instance, \QC asks whether you want to use the old settings. The settings
are specific to the development environment, and should not be copied from are specific to the development environment, and should not be copied from
one environment to another. Therefore, we recommend that you click \uicontrol No one environment to another. Therefore, we recommend that you select \uicontrol No
and enter the information again in the \uicontrol {Configure Project} tab. and enter the information again in the \uicontrol {Configure Project} tab.
The \uicontrol {Configure Project} tab displays a list of \l{glossary-buildandrun-kit}{kits} The \uicontrol {Configure Project} tab displays a list of \l{glossary-buildandrun-kit}{kits}
@@ -86,8 +86,10 @@
(CMake), \e {.qbs} (Qbs), \e {pyproject} (Python), or (CMake), \e {.qbs} (Qbs), \e {pyproject} (Python), or
\e {Makefile.am} (Autotools, experimental). \e {Makefile.am} (Autotools, experimental).
\li In the \uicontrol {Configure Project} tab, select kits for building and running your \li In the \uicontrol {Configure Project} tab, select kits for building
project, and click \uicontrol {Configure Project}. and running your project.
\li Select \uicontrol {Configure Project}.
\endlist \endlist
@@ -96,16 +98,16 @@
\list \list
\li In all modes, select \key Ctrl+O (\key Cmd+O on \macos) to open the \li In all modes, press \key Ctrl+O (\key Cmd+O on \macos) to open the
\uicontrol {Open File} dialog, where you can select a project file \uicontrol {Open File} dialog, where you can select a project file
to open a project. to open a project.
\li In all modes, except the \uicontrol Help mode, select \li In all modes, except the \uicontrol Help mode, press
\key Ctrl+Shift+O (\key Cmd+Shift+O on \macos) to open the \key Ctrl+Shift+O (\key Cmd+Shift+O on \macos) to open the
\uicontrol {Load Project} dialog, where you can select a project \uicontrol {Load Project} dialog, where you can select a project
file to open a project. file to open a project.
\li In the \uicontrol Welcome mode, \uicontrol Projects tab, select \li In the \uicontrol Welcome mode, \uicontrol Projects tab, press
\key Ctrl+Shift+number (\key Cmd+Shift+number on \macos), where \key Ctrl+Shift+number (\key Cmd+Shift+number on \macos), where
the number is the number of a project in the list of recently opened the number is the number of a project in the list of recently opened
projects. projects.

View File

@@ -50,7 +50,8 @@
To set up a project, you first have to decide what kind of an To set up a project, you first have to decide what kind of an
application you want to develop: do you want a user interface based application you want to develop: do you want a user interface based
on Qt Quick or Qt widgets. Second, you have to choose the on Qt Quick or Qt widgets. Second, you have to choose the
language to implement the application logic: C++ or JavaScript. language to implement the application logic: C++, JavaScript, or
Python.
\li \l{Using Version Control Systems} \li \l{Using Version Control Systems}

View File

@@ -47,10 +47,16 @@
build that is delivered with separate debug information. It is best suited build that is delivered with separate debug information. It is best suited
for analyzing applications. for analyzing applications.
\section1 Managing Build Configurations
You specify build settings in the \uicontrol Projects mode. You specify build settings in the \uicontrol Projects mode.
To add a new build configuration, click \uicontrol Add and select the type of To add a new build configuration, click \uicontrol Add and select the type of
configuration you would like to add. You can add as many build configuration you would like to add. You can add as many build
configurations as you need. configurations as you need. You can also select \uicontrol Clone to
add a build configuration that is based on the currently selected one.
Select \uicontrol Rename to give the currently selected build configuration
a new name.
To delete the build configuration currently selected, click \uicontrol Remove. To delete the build configuration currently selected, click \uicontrol Remove.

View File

@@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2018 The Qt Company Ltd. ** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/ ** Contact: https://www.qt.io/licensing/
** **
** This file is part of the Qt Creator documentation. ** This file is part of the Qt Creator documentation.
@@ -71,6 +71,8 @@
\li \l{File Encoding} \li \l{File Encoding}
\li \l{Selecting Line Ending Style}
\li \l{Moving to Symbol Definition or Declaration} \li \l{Moving to Symbol Definition or Declaration}
\li \l{Configuring Fonts} \li \l{Configuring Fonts}

View File

@@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2019 The Qt Company Ltd. ** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/ ** Contact: https://www.qt.io/licensing/
** **
** This file is part of the Qt Creator documentation. ** This file is part of the Qt Creator documentation.
@@ -44,17 +44,25 @@
To view and modify them, select \uicontrol Projects > To view and modify them, select \uicontrol Projects >
\uicontrol {Build & Run} > \uicontrol Run. \uicontrol {Build & Run} > \uicontrol Run.
The available run configurations are listed in the \image qtcreator-settings-run.png "Run Settings"
\uicontrol {Run configuration} field.
To add run configurations for a project, select \uicontrol Add.
To remove the current run configuration, select \uicontrol Remove.
To rename the current run configuration, select \uicontrol Rename.
To prevent \QC from automatically creating run configurations, select To prevent \QC from automatically creating run configurations, select
\uicontrol Tools > \uicontrol Options > \uicontrol {Build & Run}, \uicontrol Tools > \uicontrol Options > \uicontrol {Build & Run},
and then deselect the \uicontrol {Create suitable run configurations and then deselect the \uicontrol {Create suitable run configurations
automatically} check box. automatically} check box.
\section1 Managing Run Configurations
The available run configurations are listed in the
\uicontrol {Run configuration} field.
To add run configurations for a project, select \uicontrol Add. To
add a run configuration that is based on the current one, select
\uicontrol Clone.
To rename the current run configuration, select \uicontrol Rename.
To remove the current run configuration, select \uicontrol Remove.
The run configurations for qmake projects derive their executable from the The run configurations for qmake projects derive their executable from the
parsed .pro files. For more information on how the commands are constructed, parsed .pro files. For more information on how the commands are constructed,
see \l{Starting External Processes}. see \l{Starting External Processes}.

View File

@@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2019 The Qt Company Ltd. ** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/ ** Contact: https://www.qt.io/licensing/
** **
** This file is part of the Qt Creator documentation. ** This file is part of the Qt Creator documentation.
@@ -48,8 +48,9 @@
To run executable files without deploying them first, select \uicontrol Build > To run executable files without deploying them first, select \uicontrol Build >
\uicontrol {Run Without Deployment}. To make this the default option, deselect the \uicontrol {Run Without Deployment}. To make this the default option, deselect the
\uicontrol Tools > \uicontrol Options > \uicontrol Project > \uicontrol Tools > \uicontrol Options > \uicontrol {Build & Run} >
\uicontrol {Always deploy project before running it} option. \uicontrol General > \uicontrol {Always deploy project before running it}
check box.
To run applications: To run applications:

View File

@@ -91,10 +91,12 @@
\list \list
\li \l {Creating Qt Quick Projects} \li \l {Creating Qt Quick Projects}
\li \l {Editing QML Files in Design Mode} \li \l {Editing QML Files in Design Mode}
\li \l {Creating UIs} \li \l {Creating UIs}
\list \list
\li \l {Creating Components} \li \l {Creating Components}
\list \list
\li \l{Editing 2D Content}
\li \l{Creating Buttons} \li \l{Creating Buttons}
\li \l{Creating Scalable Buttons and Borders} \li \l{Creating Scalable Buttons and Borders}
\endlist \endlist

View File

@@ -32,36 +32,47 @@
\li Select \uicontrol File > \uicontrol {New File or Project} > \li Select \uicontrol File > \uicontrol {New File or Project} >
\uicontrol {Application (Qt Quick)} > \uicontrol {Application (Qt Quick)} >
\uicontrol {Qt Quick Application - Swipe} > \uicontrol Choose. \uicontrol {Qt Quick Application - Swipe}.
\li Select \uicontrol Choose to open the
\uicontrol {Project Location} dialog.
\li In the \uicontrol Name field, enter a name for the application. \li In the \uicontrol Name field, enter a name for the application.
\li In the \uicontrol {Create in} field, enter the path for the project \li In the \uicontrol {Create in} field, enter the path for the project
files, and then select \uicontrol Next (or \uicontrol Continue on files.
\macos).
\li Select \uicontrol Next (or \uicontrol Continue on \macos) to open
the \uicontrol {Define Build System} dialog.
\li In the \uicontrol {Build system} field, select the build system to \li In the \uicontrol {Build system} field, select the build system to
use for building and running the project: \l qmake, use for building and running the project: \l qmake,
\l {Setting Up CMake}{CMake}, or \l {Setting Up Qbs}{Qbs}. \l {Setting Up CMake}{CMake}, or \l {Setting Up Qbs}{Qbs}.
\li In the \uicontrol {Qt Quick Controls Style} field, select one of \li Select \uicontrol Next to open the
the predefined \l{Styling Qt Quick Controls}{UI styles} to use, \uicontrol {Define Project Details} dialog.
and then select \uicontrol Next.
\li Select \uicontrol Next to use the default settings and to open
the \uicontrol {Translation File} dialog.
\li Select \uicontrol Next to use the default settings and to open
the \uicontrol {Kit Selection} dialog.
\li Select \l{glossary-buildandrun-kit}{kits} for the platforms that \li Select \l{glossary-buildandrun-kit}{kits} for the platforms that
you want to build the application for. To build applications for you want to build the application for. To build applications for
mobile devices, select kits for Android ARM and iPhone OS, and mobile devices, select kits for Android ARM and iPhone OS.
click \uicontrol{Next}.
\note Kits are listed if they have been specified in \uicontrol \note Kits are listed if they have been specified in \uicontrol
Tools > \uicontrol Options > \uicontrol Kits (on Windows and Linux) Tools > \uicontrol Options > \uicontrol Kits (on Windows and Linux)
or in \uicontrol {\QC} > \uicontrol Preferences > or in \uicontrol {\QC} > \uicontrol Preferences >
\uicontrol Kits (on \macos). \uicontrol Kits (on \macos).
For more information, see \l {Adding Kits}.
\li Select \uicontrol Next. \li Select \uicontrol Next to open the \uicontrol {Project Management}
dialog.
\li Review the project settings, and click \uicontrol{Finish} (or \li Review the project settings, and select \uicontrol{Finish}
\uicontrol Done on \macos). (or \uicontrol Done on \macos) to create the project.
\endlist \endlist
@@ -71,5 +82,8 @@
in the \uicontrol {Text Editor} to add the application logic. For the in the \uicontrol {Text Editor} to add the application logic. For the
purposes of this example, you can ignore \e Page2Form.ui.qml. purposes of this example, you can ignore \e Page2Form.ui.qml.
For more information about the settings that you skipped, see
\l{Creating Qt Quick Applications}.
//! [qt quick application] //! [qt quick application]
*/ */

View File

@@ -46,9 +46,8 @@
\li \l {Editing QML Files in Design Mode} \li \l {Editing QML Files in Design Mode}
You can use the \uicontrol {Form Editor} or the You can use several different editors and views in the
\uicontrol {Text Editor} in the Design mode to Design mode to develop Qt Quick applications.
develop Qt Quick applications.
\li \l {Creating UIs} \li \l {Creating UIs}

View File

@@ -100,30 +100,44 @@
\QC creates the necessary boilerplate files. Some of the files are \QC creates the necessary boilerplate files. Some of the files are
specific to a particular target platform. specific to a particular target platform.
\section1 Creating Empty Qt Quick Applications \section1 Creating Qt Quick Applications
\list 1 \list 1
\li Select \uicontrol File > \uicontrol {New File or Project} > \li Select \uicontrol File > \uicontrol {New File or Project} >
\uicontrol {Application (Qt Quick)} > \uicontrol {Application (Qt Quick)}.
\uicontrol {Qt Quick Application - Empty} > \uicontrol Choose.
\li Select the application type:
\list
\li \uicontrol {Qt Quick Application - Empty}
\li \uicontrol {Qt Quick Application - Scroll}
\li \uicontrol {Qt Quick Application - Stack}
\li \uicontrol {Qt Quick Application - Swipe}
\endlist
\li Select \uicontrol Choose to open the \uicontrol {Project Location}
dialog.
\li In the \uicontrol Name field, enter a name for the application. \li In the \uicontrol Name field, enter a name for the application.
\li In the \uicontrol {Create in} field, enter the path for the project \li In the \uicontrol {Create in} field, enter the path for the project
files, and then select \uicontrol Next (or \uicontrol Continue on files. Select the \uicontrol {Use as default project location} check
\macos). box to create new projects in this folder by default.
\li Select \uicontrol Next (or \uicontrol Continue on \macos) to open
the \uicontrol {Define Build System} dialog.
\li In the \uicontrol {Build system} field, select the build system to \li In the \uicontrol {Build system} field, select the build system to
use for building and running the project: \l qmake, use for building and running the project: \l qmake,
\l {Setting Up CMake}{CMake}, or \l {Setting Up Qbs}{Qbs}. \l {Setting Up CMake}{CMake}, or \l {Setting Up Qbs}{Qbs}.
\li Select \uicontrol Next. \li Select \uicontrol Next to open the
\uicontrol {Define Project Details} dialog.
\li Select the Qt version to \li Select the Qt version to develop with in the
develop with in the \uicontrol {Minimal required Qt version} field. \uicontrol {Minimal required Qt version} field.
The Qt version determines the Qt Quick imports that are used in the The Qt version determines the Qt Quick imports
QML files. that are used in the QML files.
\li Select the \uicontrol {Use Qt Virtual Keyboard} check box to add \li Select the \uicontrol {Use Qt Virtual Keyboard} check box to add
support for \l{http://doc.qt.io/qt-5/qtvirtualkeyboard-index.html} support for \l{http://doc.qt.io/qt-5/qtvirtualkeyboard-index.html}
@@ -135,7 +149,8 @@
You can use the \l {Installing Qt}{Qt Maintenance Tool} to install You can use the \l {Installing Qt}{Qt Maintenance Tool} to install
Qt Virtual Keyboard. Qt Virtual Keyboard.
\li Select \uicontrol Next. \li Select \uicontrol Next to open the \uicontrol {Translation File}
dialog.
\li In the \uicontrol Language field, select a language that you plan \li In the \uicontrol Language field, select a language that you plan
to \l {Using Qt Linguist}{translate} the application to. You can to \l {Using Qt Linguist}{translate} the application to. You can
@@ -145,83 +160,42 @@
name for the translation source file that will be generated name for the translation source file that will be generated
for the selected language. for the selected language.
\li Select \uicontrol Next. \li Select \uicontrol Next to open the \uicontrol {Kit Selection}
dialog.
\li Select \l{glossary-buildandrun-kit}{kits} for running and building
your project, and then click \uicontrol Next.
\note Kits are listed if they have been specified in
\uicontrol Tools > \uicontrol Options > \uicontrol Kits.
\li Review the project settings, and click \uicontrol Finish (on Windows
and Linux) or \uicontrol Done (on \macos) to create the project.
\endlist
\QC generates a QML file, \e main.qml, that you can modify in the Design
mode.
\include creator-python-project.qdocinc python qml project wizards
\section1 Creating Qt Quick Controls Applications
\list 1
\li Select \uicontrol File > \uicontrol {New File or Project} >
\uicontrol {Application (Qt Quick)} >
\uicontrol {Qt Quick Application - Scroll},
\uicontrol {Qt Quick Application - Stack}, or
\uicontrol {Qt Quick Application - Swipe} > \uicontrol Choose.
\li In the \uicontrol Name field, enter a name for the application.
\li In the \uicontrol {Create in} field, enter the path for the project
files, and then select \uicontrol Next (or \uicontrol Continue on
\macos).
\li In the \uicontrol {Build system} field, select the build system to
use for building and running the project: \l qmake,
\l {Setting Up CMake}{CMake}, or \l {Setting Up Qbs}{Qbs}.
\li In the \uicontrol {Qt Quick Controls Style} field, select one of
the predefined \l{Styling Qt Quick Controls}{UI styles} to use,
and then select \uicontrol Next.
\li Select the \uicontrol {Use Qt Virtual Keyboard} check box to add
support for \l{http://doc.qt.io/qt-5/qtvirtualkeyboard-index.html}
{Qt Virtual Keyboard} to the application.
\note \l{http://doc.qt.io/qt-5/qtvirtualkeyboard-index.html}
{Qt Virtual Keyboard} is not supported for Android and iOS.
\li Select \l{glossary-buildandrun-kit}{kits} for the platforms that \li Select \l{glossary-buildandrun-kit}{kits} for the platforms that
you want to build the application for. To build applications for you want to build the application for.
mobile devices, select kits for Android ARM and iOS, and
click \uicontrol{Next}.
\note Kits are listed if they have been specified in \uicontrol \note Kits are listed if they have been specified in \uicontrol
Tools > \uicontrol Options > \uicontrol Kits (on Windows and Linux) Tools > \uicontrol Options > \uicontrol Kits (on Windows and Linux)
or in \uicontrol {\QC} > \uicontrol Preferences > or in \uicontrol {\QC} > \uicontrol Preferences >
\uicontrol Kits (on \macos). \uicontrol Kits (on \macos).
For more information, see \l {Adding Kits}.
\li Select \uicontrol Next. \li Select \uicontrol Next to open the \uicontrol {Project Management}
dialog.
\li Review the project settings, and click \uicontrol{Finish} (or \li Review the project settings, and select \uicontrol Finish
\uicontrol Done on \macos). (on Windows and Linux) or \uicontrol Done (on \macos) to
create the project.
\endlist \endlist
For the Scroll application, \QC creates a QML file, \e main.qml, that you For the Empty and Scroll applications, \QC creates a QML file,
can modify in the Design mode. \e main.qml, that you can modify in the \uicontrol {Form Editor}
or the \uicontrol {Text Editor}.
For the Stack and Swipe applications, \QC generates two UI files, For the Stack and Swipe applications, \QC generates two UI files,
\e Page1Form.ui.qml and \e Page2Form.ui.qml, that you can modify in the \e Page1Form.ui.qml and \e Page2Form.ui.qml, that you can modify in the
\uicontrol {Form Editor} and a QML file, \e main.qml, that you can \uicontrol {Form Editor} and a QML file, \e main.qml, that you can
modify in the \uicontrol {Text Editor} to add the application logic. modify in the \uicontrol {Text Editor} to add the application logic.
\include creator-python-project.qdocinc python qml project wizards
\section1 Creating Qt Quick UI Projects \section1 Creating Qt Quick UI Projects
Qt Quick UI projects are useful for testing or prototyping user interfaces, Qt Quick UI Prototype projects are useful for testing or prototyping user
interfaces,
or for setting up a separate project just for QML editing, for example. You or for setting up a separate project just for QML editing, for example. You
cannot use them for application development, because they do not contain: cannot use them for application development, because they do not contain:
@@ -232,13 +206,28 @@
{devices} {devices}
\endlist \endlist
To create a Qt Quick UI project: For more information about how to turn Qt Quick UI Prototype projects into
Qt Quick Application projects, see
\l{Converting UI Projects to Applications}.
To create a Qt Quick UI Prototype project:
\list 1 \list 1
\li Select \uicontrol File > \uicontrol {New File or Project} > \li Select \uicontrol File > \uicontrol {New File or Project} >
\uicontrol {Other Project} > \uicontrol {Qt Quick UI Prototype} > \uicontrol {Other Project} > \uicontrol {Qt Quick UI Prototype}.
\uicontrol Choose.
\li Select \uicontrol Choose to open the \uicontrol {Project Location}
dialog.
\li In the \uicontrol Name field, enter a name for the application.
\li In the \uicontrol {Create in} field, enter the path for the project
files. Select the \uicontrol {Use as default project location} check
box to create new projects in this folder by default.
\li Select \uicontrol Next (or \uicontrol Continue on \macos) to open
the \uicontrol {Define Project Details} dialog.
\li In the \uicontrol {Minimal required Qt version} field, select the Qt \li In the \uicontrol {Minimal required Qt version} field, select the Qt
version to develop with. The Qt version determines the Qt Quick version to develop with. The Qt version determines the Qt Quick
@@ -252,10 +241,30 @@
support for \l{http://doc.qt.io/qt-5/qtvirtualkeyboard-index.html} support for \l{http://doc.qt.io/qt-5/qtvirtualkeyboard-index.html}
{Qt Virtual Keyboard} to the application. {Qt Virtual Keyboard} to the application.
\li Select \uicontrol Next (or \uicontrol Continue on \macos). \note If you have not installed the Qt Virtual Keyboard module when
you installed Qt, an error message will appear when you try to open
the \e main.qml in the \uicontrol {Form Editor} in the Design mode.
You can use the \l {Installing Qt}{Qt Maintenance Tool} to install
Qt Virtual Keyboard.
\li Review the project settings, and click \uicontrol Finish (on Windows \li Select \uicontrol Next to open the \uicontrol {Kit Selection}
and Linux) or \uicontrol Done (on \macos) to create the project. dialog.
\li Select \l{glossary-buildandrun-kit}{kits} for the platforms that
you want to build the application for.
\note Kits are listed if they have been specified in \uicontrol
Tools > \uicontrol Options > \uicontrol Kits (on Windows and Linux)
or in \uicontrol {\QC} > \uicontrol Preferences >
\uicontrol Kits (on \macos).
For more information, see \l {Adding Kits}.
\li Select \uicontrol Next to open the \uicontrol {Project Management}
dialog.
\li Review the project settings, and select \uicontrol Finish
(on Windows and Linux) or \uicontrol Done (on \macos) to
create the project.
\endlist \endlist

View File

@@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2017 The Qt Company Ltd. ** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/ ** Contact: https://www.qt.io/licensing/
** **
** This file is part of the Qt Creator documentation. ** This file is part of the Qt Creator documentation.
@@ -33,7 +33,9 @@
\list \list
\li In the \uicontrol Arguments field, you can specify command line arguments \li In the \uicontrol {QML Viewer} field, specify the \QQV to use.
\li In the \uicontrol {Command line arguments} field, specify arguments
to be passed to the executable. to be passed to the executable.
\li In the \uicontrol {Main QML file}, select the file that \QQV will be \li In the \uicontrol {Main QML file}, select the file that \QQV will be

View File

@@ -37,7 +37,7 @@
name and one or several comments. The comments have a title, author, and name and one or several comments. The comments have a title, author, and
comment text. comment text.
\image qtquick-annotations.png "Annotations displayed in the Form Editor tab" \image qtquick-annotations.png "Annotations displayed in the Form Editor view"
Annotations are saved in the end of QML files when you save the file. They Annotations are saved in the end of QML files when you save the file. They
do not affect the QML performance in any way. do not affect the QML performance in any way.

View File

@@ -31,7 +31,7 @@
/*! /*!
\contentspage index.html \contentspage index.html
\previouspage quick-components.html \previouspage qtquick-form-editor.html
\page quick-buttons.html \page quick-buttons.html
\nextpage quick-scalable-image.html \nextpage quick-scalable-image.html

View File

@@ -37,7 +37,7 @@
\else \else
\previouspage creator-using-qt-quick-designer.html \previouspage creator-using-qt-quick-designer.html
\endif \endif
\nextpage quick-buttons.html \nextpage qtquick-form-editor.html
\title Creating Components \title Creating Components
@@ -71,7 +71,7 @@
\section1 Adding Components to Designs \section1 Adding Components to Designs
\image qmldesigner-visual-editor.png "Design mode" \image studio-design-mode.png "Design mode"
\list 1 \list 1
\li Drag and drop components from the \uicontrol Library (2) to the \li Drag and drop components from the \uicontrol Library (2) to the
@@ -564,11 +564,14 @@
\endlist \endlist
The following sections contain examples of how to create some common The following sections contain more information about how to use the
components: \uicontrol {Form Editor} to edit 2D content, as well as examples of
how to create some common components using basic QML types:
\list \list
\li \l{Editing 2D Content}
\li \l{Creating Buttons} \li \l{Creating Buttons}
\li \l{Creating Scalable Buttons and Borders} \li \l{Creating Scalable Buttons and Borders}

View File

@@ -43,33 +43,26 @@
\title Editing QML Files in Design Mode \title Editing QML Files in Design Mode
\QC opens \l{Qt Quick UI Forms}{UI forms} (ui.qml files) in the \QC opens \l{Qt Quick UI Forms}{UI forms} (ui.qml files) in the
\uicontrol {Form Editor} tab in the Design mode. It is \uicontrol {Form Editor} view in the Design mode. It is
recommended that you use UI forms for components that you want to recommended that you use UI forms for components that you want to
edit in the Design mode. edit in the Design mode.
\if defined(qtcreator)
\image qmldesigner-visual-editor.png "Visual editor"
\else
\image studio-design-mode.png "Design mode" \image studio-design-mode.png "Design mode"
\endif
To manage your project in the Design mode: The Design mode contains different views for designing UIs. To open the
following views, select \uicontrol Window > \uicontrol Views:
\list \list
\li \uicontrol {Form Editor} (1) provides a canvas for designing 2D UIs.
For more information, see \l {Editing 2D Content}.
\li \uicontrol Canvas (1) is the working area where you create QML \li \uicontrol {3D Editor} provides an editor for files you created
components and design applications. In the \uicontrol {Form Editor} using 3D graphics applications and stored in one of the supported
tab, you can use a visual editor to design UIs, and in the formats. For more information, see \l{Editing 3D Scenes}.
\uicontrol {Text Editor} tab, you can use a code editor to edit the
QML code generated by the visual editor.
\li Use the sidebars to select QML types to use in the project, to \li \uicontrol {Text Editor} provides a code editor for editing the QML
specify properties for them, and to code generated by the visual editors. For more information, see
view them in a tree structure, as well as to create connections \l {Working in Edit Mode}.
and browse projects and files. You can select the content of the
sidebars in the sidebar menu:
\list
\li \uicontrol {Library} (2) displays the building blocks that you \li \uicontrol {Library} (2) displays the building blocks that you
can use to design applications: predefined QML types, your own can use to design applications: predefined QML types, your own
@@ -82,7 +75,7 @@
\l {Managing Item Hierarchy}. \l {Managing Item Hierarchy}.
\li \uicontrol {Properties} (4) organizes the properties of the \li \uicontrol {Properties} (4) organizes the properties of the
selected item. You can change the properties also in the selected component. You can change the properties also in the
\uicontrol {Text Editor}. For more information, see \uicontrol {Text Editor}. For more information, see
\l {Specifying Item Properties}. \l {Specifying Item Properties}.
@@ -100,93 +93,18 @@
current session. For more information, see current session. For more information, see
\l{Viewing Project Files}. \l{Viewing Project Files}.
\endlist \li \uicontrol {States} (6) displays the different states of the item.
\li \uicontrol {States} view (6) displays the different states of the item.
QML states typically describe user interface configurations, such as QML states typically describe user interface configurations, such as
the UI controls, their properties and behavior and the available the UI controls, their properties and behavior and the available
actions. For more information, see \l{Adding States}. actions. For more information, see \l{Adding States}.
\if defined(qtdesignstudio) \li \uicontrol Timeline (7) provides a timeline and keyframe based
\li \uicontrol Timeline view (7) provides a timeline and keyframe based
editor that enables you to animate the properties of UI components. editor that enables you to animate the properties of UI components.
\endif For more information, see \l{Creating Animations}.
\endlist \endlist
\section1 Snapping to Parent and Sibling Items You can move the views anywhere on the screen and save them as
\e workspaces, as instructed in \l {Managing Workspaces}.
You design applications on the canvas by placing items on it.
When you are working on a design, you can use snapping to align
items on the canvas. Click the \inlineimage snapping.png
button to have the items snap to their parent or sibling items. Snapping
lines automatically appear to help you position the items.
Click the \inlineimage snapping_and_anchoring.png
button to anchor the item to the items that you snap to.
Choose \uicontrol Tools > \uicontrol Options > \uicontrol {Qt Quick} >
\uicontrol {\QMLD} to specify settings for snapping. In the
\uicontrol {Parent item padding} field, specify the
distance in pixels between the parent item and the snapping lines. In the
\uicontrol {Sibling item spacing} field, specify the distance in pixels between
sibling items and the snapping lines.
The following image shows the snapping lines (1) when
\uicontrol {Parent item padding} is set to 5 pixels.
\image qmldesigner-snap-margins.png "Snapping lines on canvas"
\section1 Hiding Item Boundaries
The Design mode displays the boundaries of items on the canvas. To hide
the boundaries, click the \inlineimage boundingrect.png
button.
\section1 Selecting Items
When you point the mouse to overlapping items, the frontmost item is
selected by default. However, items that do not have any content, such as
the mouse area, are typically located in front of items that do have
content, such as rectangles or border images. To select items with content
by default, click the
\inlineimage qmldesigner-only-select-items-with-content.png
button.
\section1 Previewing Component Size
The width and height of the root item in a QML file determine the size of
the component. You can reuse components, such as buttons, in different
sizes in other QML files and design UIs for use with different device
profiles, screen resolution, or screen orientation. The component size
might also be zero (0,0) if its final size is determined by property
bindings.
To experiment with different component sizes, enter values in the
\uicontrol {Override Width} and \uicontrol {Override Height} fields (1) on
the canvas toolbar. The changes are displayed on the canvas (2)
and in the \uicontrol States view (3), but the property
values are not changed permanently in the QML file. You can permanently
change the property values in the \uicontrol Properties view (4).
\image qmldesigner-preview-size.png "Canvas width and height"
\section1 Specifying Canvas Size
To change the canvas size, select \uicontrol Tools > \uicontrol Options >
\uicontrol {Qt Quick} > \uicontrol {\QMLD} and
specify the canvas width and height in the \uicontrol Canvas group.
\section1 Refreshing the Canvas
When you open QML files in the Design mode, the items in the file are drawn
on the canvas. When you edit the item properties, the QML file and
the image on the canvas might get out of sync. For example, when you change
the position of an item within a column or a row, the new position might
not be displayed correctly on the canvas.
To refresh the image on the canvas, press \key R or select the
\inlineimage reset.png
(\uicontrol {Reset View}) button.
*/ */

View File

@@ -0,0 +1,110 @@
/****************************************************************************
**
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Creator documentation.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
**
****************************************************************************/
/*!
\contentspage index.html
\page qtquick-form-editor.html
\previouspage quick-components.html
\nextpage quick-buttons.html
\title Editing 2D Content
You design applications in the \uicontrol {Form Editor} by placing items
into it.
\section1 Snapping to Parent and Sibling Items
When you are working on a design, you can use snapping to align
items in the \uicontrol {Form Editor}. Click the \inlineimage snapping.png
button to have the items snap to their parent or sibling items. Snapping
lines automatically appear to help you position the items.
Click the \inlineimage snapping_and_anchoring.png
button to anchor the item to the items that you snap to.
Choose \uicontrol Tools > \uicontrol Options > \uicontrol {Qt Quick} >
\uicontrol {\QMLD} to specify settings for snapping. In the
\uicontrol {Parent item padding} field, specify the
distance in pixels between the parent item and the snapping lines. In the
\uicontrol {Sibling item spacing} field, specify the distance in pixels between
sibling items and the snapping lines.
The following image shows the snapping lines (1) when
\uicontrol {Parent item padding} is set to 5 pixels.
\image qmldesigner-snap-margins.png "Snapping lines on canvas"
\section1 Hiding Item Boundaries
The \uicontrol {Form Editor} displays the boundaries of items.
To hide them, select the \inlineimage boundingrect.png
button.
\section1 Selecting Items
When you point the mouse to overlapping items, the frontmost item is
selected by default. However, items that do not have any content, such as
the mouse area, are typically located in front of items that do have
content, such as rectangles or border images. To select items with content
by default, click the
\inlineimage qmldesigner-only-select-items-with-content.png
button.
\section1 Previewing Component Size
The width and height of the root item in a QML file determine the size of
the component. You can reuse components, such as buttons, in different
sizes in other QML files and design UIs for use with different device
profiles, screen resolution, or screen orientation. The component size
might also be zero (0,0) if its final size is determined by property
bindings.
To experiment with different component sizes, enter values in the
\uicontrol {Override Width} and \uicontrol {Override Height} fields (1) on
the canvas toolbar. The changes are displayed in the \uicontrol {Form Editor}
(2) and in the \uicontrol States view (3), but the property
values are not changed permanently in the QML file. You can permanently
change the property values in the \uicontrol Properties view (4).
\image qmldesigner-preview-size.png "Canvas width and height"
\section1 Specifying Canvas Size
To change the canvas size, select \uicontrol Tools > \uicontrol Options >
\uicontrol {Qt Quick} > \uicontrol {\QMLD} and
specify the canvas width and height in the \uicontrol Canvas group.
\section1 Refreshing the Form Editor Contents
When you open QML files in the Design mode, the items in the file are drawn
in the \uicontrol {Form Editor}. When you edit the item properties, the QML
file and the contents of the editor might get out of sync. For example, when
you change the position of an item within a column or a row, the new
position might not be displayed correctly in the \uicontrol {Form Editor}.
To refresh the contents of the \uicontrol {Form Editor}, press \key R or
select the \inlineimage reset.png
(\uicontrol {Reset View}) button.
*/

View File

@@ -47,8 +47,7 @@
\endif \endif
To preview any QML file that belongs to the project, right-click the project To preview any QML file that belongs to the project, right-click the project
name in the \uicontrol Project tab in the \uicontrol Navigator, and select name in the \uicontrol Projects view, and select \uicontrol {Preview file}.
\uicontrol {Preview file}.
To preview the whole UI, select \uicontrol {Show Live Preview} To preview the whole UI, select \uicontrol {Show Live Preview}
when viewing the main QML UI file of the project. when viewing the main QML UI file of the project.

View File

@@ -326,6 +326,10 @@
\uicontrol {Insert Keyframe} to add a keyframe. \uicontrol {Insert Keyframe} to add a keyframe.
\li Select keyframes to display the easing curves attached to them. \li Select keyframes to display the easing curves attached to them.
To select multiple keyframes, press and hold \key Ctrl. To select multiple keyframes, press and hold \key Ctrl.
\li To lock an easing curve, hover the mouse over the keyframe in the
list, and then select the lock icon.
\li To pin an easing curve, hover the mouse over the keyframe in the
list, and then select the pin icon.
\endlist \endlist
Your changes are automatically saved when you close the editor. Your changes are automatically saved when you close the editor.

View File

@@ -96,18 +96,38 @@
To display the versioning history of a file, select \uicontrol{Log of}. To display the versioning history of a file, select \uicontrol{Log of}.
The log output contains the date, the commit message, and a commit The log output contains the date, the commit message, and a commit
identifier. Click on the commit identifier to display a description identifier. Click on the commit identifier to view commit details.
of the change including the diff in the \uicontrol {Git Show} view.
\image qtcreator-vcs-show.png \image qtcreator-git-log.png "Commit details in Git log"
Right-clicking on a commit identifier brings up a context menu that lets Right-clicking on a commit identifier brings up a context menu that lets
you apply actions on the commit, such as view annotations or cherry-pick you apply actions on the commit, such as view annotations or cherry-pick
or revert a commit. or revert a commit. For more information, see \l{Working with Branches}.
To toggle the diff view, select \uicontrol Diff. To use the patience
algorithm for calculating the differences, select \uicontrol Patience.
To only show text changes, select \uicontrol {Ignore Whitespace}.
To filter log entries by the text in the commit message or by strings that
were added or removed, select \uicontrol Filter.
To follow only the first parent on merge commits, select
\uicontrol {First Parent}.
To toggle between textual and visual representation of the log, select
\uicontrol Graph.
To show log also for previous names of the file, select \uicontrol Follow.
Select \inlineimage reload_gray.png Select \inlineimage reload_gray.png
(\uicontrol Reload) to rescan the files. (\uicontrol Reload) to rescan the files.
To display a description of the change including the diff in the
\uicontrol {Git Show} view, select \uicontrol {Describe Change} in the
context menu.
\image qtcreator-vcs-show.png "Commit description in Git show"
\section2 Viewing Annotations \section2 Viewing Annotations
To view annotations, select \uicontrol{Blame}. The view displays the lines To view annotations, select \uicontrol{Blame}. The view displays the lines
@@ -174,7 +194,9 @@
\section2 Viewing Git Status \section2 Viewing Git Status
To view the status of the repository in the \uicontrol {Version Control} To view the status of the repository in the \uicontrol {Version Control}
output view, select \uicontrol Status. output pane, select \uicontrol Status. The context menu contains additional
actions, such as selecting and clearing all entries in the pane, copying
text, and opening files.
\section2 Committing Changes to Git \section2 Committing Changes to Git
@@ -226,6 +248,13 @@
\uicontrol {Interactive Rebase}. You can reorder or discard commits, squash \uicontrol {Interactive Rebase}. You can reorder or discard commits, squash
them into a single commit, or edit the commit messages. them into a single commit, or edit the commit messages.
If you already pushed the local changes to a remote, \QC refuses
the interactive rebase because the local commits are missing. To
start the interactive rebase from the change log, select
\uicontrol Branches > \uicontrol Log. Select the change, and then
select > \uicontrol {Interactive Rebase from Change} in the context
menu.
\section2 Working with Branches \section2 Working with Branches
To work with Git branches, select \uicontrol {Branches}. The checked out To work with Git branches, select \uicontrol {Branches}. The checked out
@@ -239,6 +268,10 @@
(\uicontrol {Filter Tree}), and then select (\uicontrol {Filter Tree}), and then select
\uicontrol {Include Old Entries} and \uicontrol {Include Tags}. \uicontrol {Include Old Entries} and \uicontrol {Include Tags}.
To add a tag to a change in the change log, select \uicontrol Branches >
\uicontrol Log. Select the change, and then select > \uicontrol {Add Tag
for Change} in the context menu.
If you checked out a specific commit, the list of branches displays a If you checked out a specific commit, the list of branches displays a
\e {Detached HEAD} entry. \e {Detached HEAD} entry.
@@ -422,6 +455,8 @@
to perform a rebase operation while pulling. to perform a rebase operation while pulling.
To push committed changes to the remote repository, select \uicontrol Push. To push committed changes to the remote repository, select \uicontrol Push.
If the local branch does not have an upstream branch in the remote
repository, \QC prompts you to create it and set it as upstream.
\section2 Managing Remote Repositories \section2 Managing Remote Repositories

View File

@@ -49,7 +49,7 @@
\list 1 \list 1
\li Select \uicontrol File > \uicontrol {New File or Project} > \li Select \uicontrol File > \uicontrol {New File or Project} >
\uicontrol Application > \uicontrol {Qt Widgets Application} > \uicontrol Application (Qt) > \uicontrol {Qt Widgets Application} >
\uicontrol Choose. \uicontrol Choose.
\image qtcreator-new-qt-gui-application.png "New File or Project dialog" \image qtcreator-new-qt-gui-application.png "New File or Project dialog"
@@ -61,20 +61,16 @@
\li In the \uicontrol{Name} field, type \b {TextFinder}. \li In the \uicontrol{Name} field, type \b {TextFinder}.
\li In the \uicontrol {Create in} field, enter the path for the project files. \li In the \uicontrol {Create in} field, enter the path for the project files.
For example, \c {C:\Qt\examples}, and then click \uicontrol{Next} (on For example, \c {C:\Qt\examples}, and then select \uicontrol{Next} (on
Windows and Linux) or \uicontrol Continue (on \macos). Windows and Linux) or \uicontrol Continue (on \macos).
The \uicontrol {Kit Selection} dialog opens. The \uicontrol {Define Build System} dialog opens.
\image qtcreator-new-project-qt-versions-qt-gui.png "Kit Selection dialog" \image qtcreator-new-project-build-system-qt-gui.png "Define Build System dialog"
\li Select build and run \l{glossary-buildandrun-kit}{kits} for your project, \li In the \uicontrol {Build system} field, select the build system to
and click \uicontrol Next or \uicontrol Continue. use for building and running the project: \l qmake,
\l {Setting Up CMake}{CMake}, or \l {Setting Up Qbs}{Qbs}.
\note If only one kit is specified in \uicontrol Tools >
\uicontrol Options > \uicontrol Kits (on Windows and Linux) or in
\uicontrol {\QC} > \uicontrol Preferences > \uicontrol Kits
(on \macos), this dialog is skipped.
The \uicontrol{Class Information} dialog opens. The \uicontrol{Class Information} dialog opens.
@@ -89,13 +85,20 @@
\note The \uicontrol{Header file}, \uicontrol{Source file} and \uicontrol{Form file} \note The \uicontrol{Header file}, \uicontrol{Source file} and \uicontrol{Form file}
fields are automatically updated to match the name of the class. fields are automatically updated to match the name of the class.
\li Click \uicontrol Next or \uicontrol Continue. The \uicontrol {Kit Selection} dialog opens.
\image qtcreator-new-project-qt-versions-qt-gui.png "Kit Selection dialog"
\li Select build and run \l{glossary-buildandrun-kit}{kits} for your project,
and select \uicontrol Next or \uicontrol Continue.
\li Select \uicontrol Next or \uicontrol Continue.
The \uicontrol{Project Management} dialog opens. The \uicontrol{Project Management} dialog opens.
\image qtcreator-new-project-summary-qt-gui.png "Project Management dialog" \image qtcreator-new-project-summary-qt-gui.png "Project Management dialog"
\li Review the project settings, and click \uicontrol{Finish} (on Windows and \li Review the project settings, and select \uicontrol{Finish} (on Windows and
Linux) or \uicontrol Done (on \macos) to create the project. Linux) or \uicontrol Done (on \macos) to create the project.
\endlist \endlist
@@ -107,9 +110,9 @@
\list \list
\li main.cpp
\li textfinder.h \li textfinder.h
\li textfinder.cpp \li textfinder.cpp
\li main.cpp
\li textfinder.ui \li textfinder.ui
\li textfinder.pro \li textfinder.pro
@@ -150,7 +153,7 @@
\uicontrol Sidebar. For example, to find the \uicontrol Label widget, start typing \uicontrol Sidebar. For example, to find the \uicontrol Label widget, start typing
the word \b label. the word \b label.
\image qtcreator-texfinder-filter.png "Filter field" \image qtcreator-textfinder-filter.png "Filter field"
\li Double-click the \uicontrol{Label} widget and enter the text \li Double-click the \uicontrol{Label} widget and enter the text
\b{Keyword}. \b{Keyword}.
@@ -164,23 +167,23 @@
\image qtcreator-textfinder-objectname.png "Changing object names" \image qtcreator-textfinder-objectname.png "Changing object names"
\li Press \key {Ctrl+A} (or \key {Cmd+A}) to select the widgets and \li Press \key {Ctrl+A} (or \key {Cmd+A}) to select the widgets and
click \uicontrol{Lay out Horizontally} (or press \uicontrol{Ctrl+H} on Linux or select \uicontrol{Lay out Horizontally} (or press \key {Ctrl+H} on Linux or
Windows or \key {Ctrl+Shift+H} on \macos) to apply a horizontal Windows or \key {Ctrl+Shift+H} on \macos) to apply a horizontal
layout (QHBoxLayout). layout (QHBoxLayout).
\image qtcreator-texfinder-ui-horizontal-layout.png "Applying horizontal layout" \image qtcreator-textfinder-ui-horizontal-layout.png "Applying horizontal layout"
\li Drag and drop a \uicontrol{Text Edit} widget (QTextEdit) to the form. \li Drag and drop a \uicontrol{Text Edit} widget (QTextEdit) to the form.
\li Select the screen area and click \uicontrol{Lay out Vertically} (or press \li Select the screen area, and then select \uicontrol{Lay out Vertically}
\uicontrol{Ctrl+L}) to apply a vertical layout (QVBoxLayout). (or press \key {Ctrl+L}) to apply a vertical layout (QVBoxLayout).
\image qtcreator-textfinder-ui.png "Text Finder UI" \image qtcreator-textfinder-ui.png "Text Finder UI"
Applying the horizontal and vertical layouts ensures that the Applying the horizontal and vertical layouts ensures that the
application UI scales to different screen sizes. application UI scales to different screen sizes.
\li To call a find function when users press the \uicontrol Find button, you \li To call a find function when users select the \uicontrol Find button, you
use the Qt signals and slots mechanism. A signal is emitted when a use the Qt signals and slots mechanism. A signal is emitted when a
particular event occurs and a slot is a function that is called in particular event occurs and a slot is a function that is called in
response to a particular signal. Qt widgets have predefined signals response to a particular signal. Qt widgets have predefined signals
@@ -201,7 +204,7 @@
\endlist \endlist
\li Press \uicontrol{Ctrl+S} (or \key {Cmd+S}) to save your changes. \li Press \key {Ctrl+S} (or \key {Cmd+S}) to save your changes.
\endlist \endlist
@@ -295,7 +298,7 @@
\li In the \uicontrol{Name} field, enter \b{textfinder}. \li In the \uicontrol{Name} field, enter \b{textfinder}.
\li In the \uicontrol{Path} field, enter \c{C:\Qt\examples\TextFinder}, \li In the \uicontrol{Path} field, enter \c{C:\Qt\examples\TextFinder},
and click \uicontrol Next or \uicontrol Continue. and select \uicontrol Next or \uicontrol Continue.
The \uicontrol{Project Management} dialog opens. The \uicontrol{Project Management} dialog opens.
@@ -303,8 +306,8 @@
\li In the \uicontrol{Add to project} field, select \b{TextFinder.pro} \li In the \uicontrol{Add to project} field, select \b{TextFinder.pro}
and click \uicontrol{Finish} or \uicontrol Done to open the file in the code and select \uicontrol{Finish} or \uicontrol Done to open the file
editor. in the code editor.
\li Select \uicontrol Add > \uicontrol {Add Prefix}. \li Select \uicontrol Add > \uicontrol {Add Prefix}.
@@ -320,7 +323,7 @@
\section1 Compiling and Running Your Program \section1 Compiling and Running Your Program
Now that you have all the necessary files, click the Now that you have all the necessary files, select the
\inlineimage run_small.png \inlineimage run_small.png
button to compile and run your program. button to compile and run your program.

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -0,0 +1,854 @@
<?xml version="1.0" encoding="UTF-8"?>
<qmt>
<project>
<uid>{f7c67e69-57c5-4eb1-9303-f12bb2ae0a23}</uid>
<root-package>
<instance>
<MPackage>
<base-MObject>
<MObject>
<base-MElement>
<MElement>
<uid>{9a360a3d-a5ff-4fa0-9a86-540d2cbdfa28}</uid>
</MElement>
</base-MElement>
<name>actionmanager</name>
<children>
<handles>
<handles>
<qlist>
<item>
<handle>
<uid>{6f6e0572-b8cc-4d97-95c5-edae83d0a3d2}</uid>
<target>
<instance type="MCanvasDiagram">
<MCanvasDiagram>
<base-MDiagram>
<MDiagram>
<base-MObject>
<MObject>
<base-MElement>
<MElement>
<uid>{6f6e0572-b8cc-4d97-95c5-edae83d0a3d2}</uid>
</MElement>
</base-MElement>
<name>actionmanager</name>
</MObject>
</base-MObject>
<elements>
<qlist>
<item>
<instance type="DItem">
<DItem>
<base-DObject>
<DObject>
<base-DElement>
<DElement>
<uid>{0a2e2d40-ad38-4b91-b9c1-6af2e3d2cf95}</uid>
</DElement>
</base-DElement>
<object>{0fa7cf39-5531-4f41-9e2f-d890ef2a248d}</object>
<name>ActionManager</name>
<pos>x:300;y:90</pos>
<rect>x:-50;y:-15;w:100;h:30</rect>
<visual-role>0</visual-role>
<visual-role2>1</visual-role2>
</DObject>
</base-DObject>
<shape-editable>false</shape-editable>
</DItem>
</instance>
</item>
<item>
<instance type="DItem">
<DItem>
<base-DObject>
<DObject>
<base-DElement>
<DElement>
<uid>{d918082a-dd32-48b8-bdcb-21ade3c1d067}</uid>
</DElement>
</base-DElement>
<object>{a3950ef4-9fd9-466f-a575-dc75790749c3}</object>
<name>QAction</name>
<pos>x:125;y:340</pos>
<rect>x:-30;y:-15;w:60;h:30</rect>
<visual-role>0</visual-role>
</DObject>
</base-DObject>
<shape-editable>false</shape-editable>
</DItem>
</instance>
</item>
<item>
<instance type="DBoundary">
<DBoundary>
<base-DElement>
<DElement>
<uid>{d197d1e0-23ef-4041-845f-27c65fe11b70}</uid>
</DElement>
</base-DElement>
<text>Context</text>
<pos>x:125;y:335</pos>
<rect>x:-50;y:-40;w:100;h:80</rect>
</DBoundary>
</instance>
</item>
<item>
<instance type="DBoundary">
<DBoundary>
<base-DElement>
<DElement>
<uid>{613641ea-8fec-4b44-890b-8c6ea42eb9eb}</uid>
</DElement>
</base-DElement>
<text>Plugin</text>
<pos>x:125;y:330</pos>
<rect>x:-65;y:-70;w:130;h:140</rect>
</DBoundary>
</instance>
</item>
<item>
<instance type="DItem">
<DItem>
<base-DObject>
<DObject>
<base-DElement>
<DElement>
<uid>{c9758c28-e527-4f1b-b911-9c4f7571571c}</uid>
</DElement>
</base-DElement>
<object>{ac06f227-7618-422e-a87e-5913950c91d7}</object>
<name>QAction</name>
<pos>x:275;y:340</pos>
<rect>x:-30;y:-15;w:60;h:30</rect>
<visual-role>0</visual-role>
</DObject>
</base-DObject>
<shape-editable>false</shape-editable>
</DItem>
</instance>
</item>
<item>
<instance type="DItem">
<DItem>
<base-DObject>
<DObject>
<base-DElement>
<DElement>
<uid>{d87082a8-6b2b-404f-abd3-9082585166f4}</uid>
</DElement>
</base-DElement>
<object>{0cc14318-53df-4193-8aeb-0d29d4cd1561}</object>
<name>QAction</name>
<pos>x:405;y:340</pos>
<rect>x:-30;y:-15;w:60;h:30</rect>
<visual-role>0</visual-role>
</DObject>
</base-DObject>
<shape-editable>false</shape-editable>
</DItem>
</instance>
</item>
<item>
<instance type="DBoundary">
<DBoundary>
<base-DElement>
<DElement>
<uid>{168c5e3d-54bc-412c-9cb1-9b5481100f2b}</uid>
</DElement>
</base-DElement>
<text>Context</text>
<pos>x:275;y:335</pos>
<rect>x:-50;y:-40;w:100;h:80</rect>
</DBoundary>
</instance>
</item>
<item>
<instance type="DBoundary">
<DBoundary>
<base-DElement>
<DElement>
<uid>{3447fe60-8ac5-4fe9-b518-80daba7e960a}</uid>
</DElement>
</base-DElement>
<text>Context</text>
<pos>x:405;y:335</pos>
<rect>x:-50;y:-40;w:100;h:80</rect>
</DBoundary>
</instance>
</item>
<item>
<instance type="DBoundary">
<DBoundary>
<base-DElement>
<DElement>
<uid>{fcf93e87-8ce6-43ea-ab5e-7ca651d1f429}</uid>
</DElement>
</base-DElement>
<text>Plugin</text>
<pos>x:340;y:335</pos>
<rect>x:-135;y:-70;w:270;h:140</rect>
</DBoundary>
</instance>
</item>
<item>
<instance type="DClass">
<DClass>
<base-DObject>
<DObject>
<base-DElement>
<DElement>
<uid>{8df1e5cf-5e76-453a-ba69-0fcf31f46d4e}</uid>
</DElement>
</base-DElement>
<object>{68e762c3-f1cc-479b-9700-bdb01f208340}</object>
<name>Command</name>
<pos>x:195;y:180</pos>
<rect>x:-40;y:-35;w:80;h:70</rect>
<visual-role>0</visual-role>
</DObject>
</base-DObject>
<show-all-members>true</show-all-members>
</DClass>
</instance>
</item>
<item>
<instance type="DDependency">
<DDependency>
<base-DRelation>
<DRelation>
<base-DElement>
<DElement>
<uid>{a4401c84-57c3-4f34-a88d-f35e28239944}</uid>
</DElement>
</base-DElement>
<object>{42259fbc-5917-4caf-836e-0828a032d908}</object>
<a>{0a2e2d40-ad38-4b91-b9c1-6af2e3d2cf95}</a>
<b>{8df1e5cf-5e76-453a-ba69-0fcf31f46d4e}</b>
</DRelation>
</base-DRelation>
</DDependency>
</instance>
</item>
<item>
<instance type="DClass">
<DClass>
<base-DObject>
<DObject>
<base-DElement>
<DElement>
<uid>{7ff85acd-0d85-4fe2-8cc9-d0511f96443c}</uid>
</DElement>
</base-DElement>
<object>{39911558-001e-4d0b-9827-d1d372049e86}</object>
<name>Command</name>
<pos>x:405;y:180</pos>
<rect>x:-40;y:-35;w:80;h:70</rect>
<visual-role>0</visual-role>
</DObject>
</base-DObject>
<show-all-members>true</show-all-members>
</DClass>
</instance>
</item>
<item>
<instance type="DDependency">
<DDependency>
<base-DRelation>
<DRelation>
<base-DElement>
<DElement>
<uid>{815d855b-8814-4ac7-8b75-17c3adb45344}</uid>
</DElement>
</base-DElement>
<object>{fa3943f6-6bf7-4040-acae-d04c880fb329}</object>
<a>{0a2e2d40-ad38-4b91-b9c1-6af2e3d2cf95}</a>
<b>{7ff85acd-0d85-4fe2-8cc9-d0511f96443c}</b>
</DRelation>
</base-DRelation>
</DDependency>
</instance>
</item>
<item>
<instance type="DDependency">
<DDependency>
<base-DRelation>
<DRelation>
<base-DElement>
<DElement>
<uid>{f4567b84-e58c-4212-8d0b-c7040c00639a}</uid>
</DElement>
</base-DElement>
<object>{8d18c30e-51c8-4fa2-ad22-ad6962273120}</object>
<a>{8df1e5cf-5e76-453a-ba69-0fcf31f46d4e}</a>
<b>{d918082a-dd32-48b8-bdcb-21ade3c1d067}</b>
</DRelation>
</base-DRelation>
</DDependency>
</instance>
</item>
<item>
<instance type="DDependency">
<DDependency>
<base-DRelation>
<DRelation>
<base-DElement>
<DElement>
<uid>{df1469a1-91d8-4c05-8b19-fddffbfc05d6}</uid>
</DElement>
</base-DElement>
<object>{8d11e47d-b745-4bf4-b7d2-eb042c307ddf}</object>
<a>{8df1e5cf-5e76-453a-ba69-0fcf31f46d4e}</a>
<b>{c9758c28-e527-4f1b-b911-9c4f7571571c}</b>
</DRelation>
</base-DRelation>
</DDependency>
</instance>
</item>
<item>
<instance type="DDependency">
<DDependency>
<base-DRelation>
<DRelation>
<base-DElement>
<DElement>
<uid>{b6288087-3aca-4e28-988c-c11ca3def425}</uid>
</DElement>
</base-DElement>
<object>{9f1e7858-c06c-4c7c-97d6-209d3c96360f}</object>
<a>{7ff85acd-0d85-4fe2-8cc9-d0511f96443c}</a>
<b>{d87082a8-6b2b-404f-abd3-9082585166f4}</b>
</DRelation>
</base-DRelation>
</DDependency>
</instance>
</item>
<item>
<instance type="DItem">
<DItem>
<base-DObject>
<DObject>
<base-DElement>
<DElement>
<uid>{ee71f328-354b-4993-8a63-8f4605285440}</uid>
</DElement>
</base-DElement>
<object>{158de17f-753a-4b00-8ddf-2f4432871d07}</object>
<name>Menu</name>
<pos>x:100;y:190</pos>
<rect>x:-25;y:-15;w:50;h:30</rect>
<visual-role>0</visual-role>
<visual-role2>1</visual-role2>
</DObject>
</base-DObject>
<shape-editable>false</shape-editable>
</DItem>
</instance>
</item>
<item>
<instance type="DBoundary">
<DBoundary>
<base-DElement>
<DElement>
<uid>{5b8fc43d-fb36-4523-ac54-4262dc0affce}</uid>
</DElement>
</base-DElement>
<pos>x:270;y:190</pos>
<rect>x:-205;y:-20;w:410;h:40</rect>
</DBoundary>
</instance>
</item>
</qlist>
</elements>
<last-modified>1586427331500</last-modified>
<toolbarid>General</toolbarid>
</MDiagram>
</base-MDiagram>
</MCanvasDiagram>
</instance>
</target>
</handle>
</item>
<item>
<handle>
<uid>{0fa7cf39-5531-4f41-9e2f-d890ef2a248d}</uid>
<target>
<instance type="MItem">
<MItem>
<base-MObject>
<MObject>
<base-MElement>
<MElement>
<uid>{0fa7cf39-5531-4f41-9e2f-d890ef2a248d}</uid>
</MElement>
</base-MElement>
<name>ActionManager</name>
<relations>
<handles>
<handles>
<qlist>
<item>
<handle>
<uid>{d5111c81-0745-4724-8d01-8ac36994e31c}</uid>
<target>
<instance type="MDependency">
<MDependency>
<base-MRelation>
<MRelation>
<base-MElement>
<MElement>
<uid>{d5111c81-0745-4724-8d01-8ac36994e31c}</uid>
</MElement>
</base-MElement>
<a>{0fa7cf39-5531-4f41-9e2f-d890ef2a248d}</a>
<b>{c2d3f5b7-87c5-4f67-9911-96a4a251ddd5}</b>
</MRelation>
</base-MRelation>
</MDependency>
</instance>
</target>
</handle>
</item>
<item>
<handle>
<uid>{6308a511-1fd1-472d-bdc2-0bf173c6850c}</uid>
<target>
<instance type="MDependency">
<MDependency>
<base-MRelation>
<MRelation>
<base-MElement>
<MElement>
<uid>{6308a511-1fd1-472d-bdc2-0bf173c6850c}</uid>
</MElement>
</base-MElement>
<a>{0fa7cf39-5531-4f41-9e2f-d890ef2a248d}</a>
<b>{d6694b35-bb04-4830-9713-99470b22b7d7}</b>
</MRelation>
</base-MRelation>
</MDependency>
</instance>
</target>
</handle>
</item>
<item>
<handle>
<uid>{42259fbc-5917-4caf-836e-0828a032d908}</uid>
<target>
<instance type="MDependency">
<MDependency>
<base-MRelation>
<MRelation>
<base-MElement>
<MElement>
<uid>{42259fbc-5917-4caf-836e-0828a032d908}</uid>
</MElement>
</base-MElement>
<a>{0fa7cf39-5531-4f41-9e2f-d890ef2a248d}</a>
<b>{68e762c3-f1cc-479b-9700-bdb01f208340}</b>
</MRelation>
</base-MRelation>
</MDependency>
</instance>
</target>
</handle>
</item>
<item>
<handle>
<uid>{fa3943f6-6bf7-4040-acae-d04c880fb329}</uid>
<target>
<instance type="MDependency">
<MDependency>
<base-MRelation>
<MRelation>
<base-MElement>
<MElement>
<uid>{fa3943f6-6bf7-4040-acae-d04c880fb329}</uid>
</MElement>
</base-MElement>
<a>{0fa7cf39-5531-4f41-9e2f-d890ef2a248d}</a>
<b>{39911558-001e-4d0b-9827-d1d372049e86}</b>
</MRelation>
</base-MRelation>
</MDependency>
</instance>
</target>
</handle>
</item>
</qlist>
</handles>
</handles>
</relations>
</MObject>
</base-MObject>
</MItem>
</instance>
</target>
</handle>
</item>
<item>
<handle>
<uid>{c2d3f5b7-87c5-4f67-9911-96a4a251ddd5}</uid>
<target>
<instance type="MItem">
<MItem>
<base-MObject>
<MObject>
<base-MElement>
<MElement>
<uid>{c2d3f5b7-87c5-4f67-9911-96a4a251ddd5}</uid>
</MElement>
</base-MElement>
<name>Command</name>
<relations>
<handles>
<handles>
<qlist>
<item>
<handle>
<uid>{e5b7a324-70ab-46b9-8d36-9f2ad6c0db57}</uid>
<target>
<instance type="MDependency">
<MDependency>
<base-MRelation>
<MRelation>
<base-MElement>
<MElement>
<uid>{e5b7a324-70ab-46b9-8d36-9f2ad6c0db57}</uid>
</MElement>
</base-MElement>
<a>{c2d3f5b7-87c5-4f67-9911-96a4a251ddd5}</a>
<b>{a3950ef4-9fd9-466f-a575-dc75790749c3}</b>
</MRelation>
</base-MRelation>
</MDependency>
</instance>
</target>
</handle>
</item>
<item>
<handle>
<uid>{703dd2bc-f99c-41b7-8f90-a7292645feb8}</uid>
<target>
<instance type="MDependency">
<MDependency>
<base-MRelation>
<MRelation>
<base-MElement>
<MElement>
<uid>{703dd2bc-f99c-41b7-8f90-a7292645feb8}</uid>
</MElement>
</base-MElement>
<a>{c2d3f5b7-87c5-4f67-9911-96a4a251ddd5}</a>
<b>{ac06f227-7618-422e-a87e-5913950c91d7}</b>
</MRelation>
</base-MRelation>
</MDependency>
</instance>
</target>
</handle>
</item>
</qlist>
</handles>
</handles>
</relations>
</MObject>
</base-MObject>
</MItem>
</instance>
</target>
</handle>
</item>
<item>
<handle>
<uid>{d6694b35-bb04-4830-9713-99470b22b7d7}</uid>
<target>
<instance type="MItem">
<MItem>
<base-MObject>
<MObject>
<base-MElement>
<MElement>
<uid>{d6694b35-bb04-4830-9713-99470b22b7d7}</uid>
</MElement>
</base-MElement>
<name>Command</name>
<relations>
<handles>
<handles>
<qlist>
<item>
<handle>
<uid>{4dc1c5bd-a124-4961-ad65-476e66cb6efe}</uid>
<target>
<instance type="MDependency">
<MDependency>
<base-MRelation>
<MRelation>
<base-MElement>
<MElement>
<uid>{4dc1c5bd-a124-4961-ad65-476e66cb6efe}</uid>
</MElement>
</base-MElement>
<a>{d6694b35-bb04-4830-9713-99470b22b7d7}</a>
<b>{0cc14318-53df-4193-8aeb-0d29d4cd1561}</b>
</MRelation>
</base-MRelation>
</MDependency>
</instance>
</target>
</handle>
</item>
</qlist>
</handles>
</handles>
</relations>
</MObject>
</base-MObject>
</MItem>
</instance>
</target>
</handle>
</item>
<item>
<handle>
<uid>{a3950ef4-9fd9-466f-a575-dc75790749c3}</uid>
<target>
<instance type="MItem">
<MItem>
<base-MObject>
<MObject>
<base-MElement>
<MElement>
<uid>{a3950ef4-9fd9-466f-a575-dc75790749c3}</uid>
</MElement>
</base-MElement>
<name>QAction</name>
</MObject>
</base-MObject>
</MItem>
</instance>
</target>
</handle>
</item>
<item>
<handle>
<uid>{ac06f227-7618-422e-a87e-5913950c91d7}</uid>
<target>
<instance type="MItem">
<MItem>
<base-MObject>
<MObject>
<base-MElement>
<MElement>
<uid>{ac06f227-7618-422e-a87e-5913950c91d7}</uid>
</MElement>
</base-MElement>
<name>QAction</name>
</MObject>
</base-MObject>
</MItem>
</instance>
</target>
</handle>
</item>
<item>
<handle>
<uid>{0cc14318-53df-4193-8aeb-0d29d4cd1561}</uid>
<target>
<instance type="MItem">
<MItem>
<base-MObject>
<MObject>
<base-MElement>
<MElement>
<uid>{0cc14318-53df-4193-8aeb-0d29d4cd1561}</uid>
</MElement>
</base-MElement>
<name>QAction</name>
</MObject>
</base-MObject>
</MItem>
</instance>
</target>
</handle>
</item>
<item>
<handle>
<uid>{68e762c3-f1cc-479b-9700-bdb01f208340}</uid>
<target>
<instance type="MClass">
<MClass>
<base-MObject>
<MObject>
<base-MElement>
<MElement>
<uid>{68e762c3-f1cc-479b-9700-bdb01f208340}</uid>
</MElement>
</base-MElement>
<name>Command</name>
<relations>
<handles>
<handles>
<qlist>
<item>
<handle>
<uid>{8d18c30e-51c8-4fa2-ad22-ad6962273120}</uid>
<target>
<instance type="MDependency">
<MDependency>
<base-MRelation>
<MRelation>
<base-MElement>
<MElement>
<uid>{8d18c30e-51c8-4fa2-ad22-ad6962273120}</uid>
</MElement>
</base-MElement>
<a>{68e762c3-f1cc-479b-9700-bdb01f208340}</a>
<b>{a3950ef4-9fd9-466f-a575-dc75790749c3}</b>
</MRelation>
</base-MRelation>
</MDependency>
</instance>
</target>
</handle>
</item>
<item>
<handle>
<uid>{8d11e47d-b745-4bf4-b7d2-eb042c307ddf}</uid>
<target>
<instance type="MDependency">
<MDependency>
<base-MRelation>
<MRelation>
<base-MElement>
<MElement>
<uid>{8d11e47d-b745-4bf4-b7d2-eb042c307ddf}</uid>
</MElement>
</base-MElement>
<a>{68e762c3-f1cc-479b-9700-bdb01f208340}</a>
<b>{ac06f227-7618-422e-a87e-5913950c91d7}</b>
</MRelation>
</base-MRelation>
</MDependency>
</instance>
</target>
</handle>
</item>
</qlist>
</handles>
</handles>
</relations>
</MObject>
</base-MObject>
<members>
<qlist>
<item>
<MClassMember>
<uid>{5d8da03d-d556-4eed-ae0d-6d306453496e}</uid>
<type>1</type>
<declaration>QAction</declaration>
</MClassMember>
</item>
</qlist>
</members>
</MClass>
</instance>
</target>
</handle>
</item>
<item>
<handle>
<uid>{39911558-001e-4d0b-9827-d1d372049e86}</uid>
<target>
<instance type="MClass">
<MClass>
<base-MObject>
<MObject>
<base-MElement>
<MElement>
<uid>{39911558-001e-4d0b-9827-d1d372049e86}</uid>
</MElement>
</base-MElement>
<name>Command</name>
<relations>
<handles>
<handles>
<qlist>
<item>
<handle>
<uid>{9f1e7858-c06c-4c7c-97d6-209d3c96360f}</uid>
<target>
<instance type="MDependency">
<MDependency>
<base-MRelation>
<MRelation>
<base-MElement>
<MElement>
<uid>{9f1e7858-c06c-4c7c-97d6-209d3c96360f}</uid>
</MElement>
</base-MElement>
<a>{39911558-001e-4d0b-9827-d1d372049e86}</a>
<b>{0cc14318-53df-4193-8aeb-0d29d4cd1561}</b>
</MRelation>
</base-MRelation>
</MDependency>
</instance>
</target>
</handle>
</item>
</qlist>
</handles>
</handles>
</relations>
</MObject>
</base-MObject>
<members>
<qlist>
<item>
<MClassMember>
<uid>{2d428a77-4751-4fa7-bbb7-7f58995da129}</uid>
<type>1</type>
<declaration>QAction</declaration>
</MClassMember>
</item>
</qlist>
</members>
</MClass>
</instance>
</target>
</handle>
</item>
<item>
<handle>
<uid>{158de17f-753a-4b00-8ddf-2f4432871d07}</uid>
<target>
<instance type="MItem">
<MItem>
<base-MObject>
<MObject>
<base-MElement>
<MElement>
<uid>{158de17f-753a-4b00-8ddf-2f4432871d07}</uid>
</MElement>
</base-MElement>
<name>Menu</name>
</MObject>
</base-MObject>
</MItem>
</instance>
</target>
</handle>
</item>
</qlist>
</handles>
</handles>
</children>
</MObject>
</base-MObject>
</MPackage>
</instance>
</root-package>
</project>
</qmt>

View File

@@ -0,0 +1,193 @@
/****************************************************************************
**
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Creator documentation.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
**
****************************************************************************/
/*!
\page actionmanager.html
\title The Action Manager and Commands
\QC provides a central options page for managing shortcuts for actions in
\uicontrol Tools > \uicontrol Options > \uicontrol Environment >
\uicontrol Keyboard. Plugins must tell \QC about the actions they provide,
so they can appear in the options. Also some actions, like \uicontrol Edit >
\uicontrol Undo, need to be dispatched to different plugins depending on the
context which the user is currently in, for example a text editor, or
a UI design component. The Core::ActionManager and Core::Command classes
are used to manage this.
The action manager contains a list of Core::Command instances. Each command
represents an entry in the keyboard shortcut settings.
A command also manages which actual QAction is currently represented by the
command, depending on context. For this, a command has its own QAction which
is accessible via Core::Command::action(), and should be used when adding
the command to the UI like the menu and tool buttons. This QAction delegates
its \c triggered() and \c toggled() signals to the currently active QAction.
\image actionmanager.png
\section1 Command
The class Core::Command represents an action with a shortcut that can be
set by the user in the settings, and can be delegated to an actual
QAction in a plugin, depending on context.
A command is referred to by its unique ID. Plugins use the ID when
registering an action for the command in a specified context with
Core::ActionManager::registerAction(). That method returns a Core::Command
instance that is then used to further configure the action.
If multiple QActions are registered for the same command (the same ID),
they must be registered for different contexts.
The ID is also used for grouping in the options page: everything up to the
first dot in the ID is used as the category, under which to show the
command.
By default, the options page shows the text of the currently active QAction
in addition to the ID. If that does not fit the purpose well, you can set a
different display text with Core::Command::setDescription().
Use the command's Core::Command::setDefaultKeySequence() method to set the
default key sequence that is used if the user doesn't customize it.
The shortcut on the QAction that you register with
Core::ActionManager::registerAction() is never used, so do not set that.
Core::Command::action() returns the action that should be used for UI and
user interaction. Add this to menus and tool buttons. You should never
set properties like the enabled or visibility state on this QAction
directly. It is managed by the action manager and reflects the state of the
currently active QAction in some plugin.
The QAction that you registered in the action manager is for your internal
purposes. Use that to connect your logic to the QAction::triggered()
signal, and to set the enabled and visibility state.
Core::Command::action() will reflect these changes, if your QAction is
active, determined by the active context. For performance reasons the
action text, tool tip and icon are not updated by default. They are only
copied from the first QAction registered for the command. Set the
corresponding Core::Command::CommandAttribute if you need dynamic updates
of these properties.
\section1 Contexts
When plugins register a QAction for a command, they need to provide a
Core::Context. Which of the registered QActions for a command is currently
active is decided via an ordered list of current contexts.
Contexts are collected from multiple sources:
\list
\li Global context. This is a context that is always active, with lowest
priority order.
\li Application focus. Instances of QWidget can be associated to a
context via Core::IContext. All contexts from the current focus
widget up the widget hierarchy are added to the current context.
\li Manually managed contexts. Contexts can be added and removed
manually via ICore::updateAdditionalContexts().
\endlist
\section2 Using IContext
Core::IContext is a separate object that associates the QWidget from
Core::IContext::widget() with the context Core::IContext::context().
To associate a widget with a context, create a Core::IContext instance,
set the widget and context on it, and register it with
Core::ICore::addContextObject(). Whenever your widget is in the parent
chain of the application focus widget, the context that you specified
will be active as well.
\code
auto contextObj = new Core::IContext(this);
contextObj->setWidget(myWidget);
contextObj->setContext(myContext);
Core::ICore::addContextObject(contextObj);
\endcode
You also have to unregister the IContext object with
Core::ICore::removeContextObject() when you do not need it anymore.
Some constructs in \QC automatically have an associated context, like
Core::IEditor and Core::IMode.
\section2 Manually Managing Contexts
If you want a context to be active or inactive independently of the
application focus, you can add and remove contexts manually with
Core::ICore::updateAdditionalContexts(), Core::ICore::addAdditionalContext()
and Core::ICore::removeAdditionalContext().
Prefer Core::ICore::updateAdditionalContexts() if you need to remove and add
contexts, to avoid overhead introduced by removing and adding contexts
in separate calls.
\section1 Registering Actions
Prefer registering actions in your plugin's
ExtensionSystem::IPlugin::initialize() method. This way any plugin depending
on your plugin has access to these actions.
\code
namespace Constants {
const char ACTION_ID[] = "Example.Action";
} // Constants
bool ExamplePlugin::initialize(const QStringList &arguments, QString *errorString)
{
// some other setup ...
QAction *action = new QAction(tr("Example Action"), this);
Core::Command *cmd = Core::ActionManager::registerAction(action, Constants::ACTION_ID,
Core::Context(Core::Constants::C_GLOBAL));
cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Alt+Meta+A")));
connect(action, &QAction::triggered, this, [this] {
// do something
});
// more setup ...
return true;
}
\endcode
This snippet sets up a sample action with the ID \c ACTION_ID that is always
active (specified by the context \c {Core::Constants::C_GLOBAL}), and gives
it the keyboard shortcut \c {Ctrl+Alt+Meta+A}. The \c {QAction *action}
that is registered for the global context for the action is owned by the
plugin. Connect to this QAction's triggered signal, and manage the action's
state by calling the corresponding methods on this QAction instance.
\section1 Summary
\list
\li Use Core::ActionManager::registerAction() to register your own
QAction for a command with the specified ID.
\li If multiple QActions are registered for the same command, they need
to be registered for different contexts.
\li Use Core::Command::setDefaultKeySequence(), do \e not use
QAction::setShortcut().
\li Use Core::Command::action() for user-facing purposes, such as
menus and tool buttons.
\li Use your own QAction to set properties like text and icon, and to
connect your application logic.
\endlist
*/

View File

@@ -63,6 +63,7 @@
\list \list
\li \l{The Plugin Manager, the Object Pool, and Registered Objects} \li \l{The Plugin Manager, the Object Pool, and Registered Objects}
\li \l{The Action Manager and Commands}
\omit \omit
\li \l{Aggregations} \li \l{Aggregations}
\li \l{Extending and Providing Interfaces} \li \l{Extending and Providing Interfaces}

View File

@@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2019 The Qt Company Ltd. ** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/ ** Contact: https://www.qt.io/licensing/
** **
** This file is part of the Qt Design Studio documentation. ** This file is part of the Qt Design Studio documentation.
@@ -70,6 +70,7 @@
\list \list
\li \l{Creating Components} \li \l{Creating Components}
\list \list
\li \l{Editing 2D Content}
\li \l{Creating Buttons} \li \l{Creating Buttons}
\li \l{Creating Scalable Buttons and Borders} \li \l{Creating Scalable Buttons and Borders}
\endlist \endlist

View File

@@ -109,9 +109,9 @@
them in the 3D editor. them in the 3D editor.
\list \list
\li In the \inlineimage item_selection_selected.png \li In the \inlineimage select_item.png
(\uicontrol {Select Item}) mode, a single item is selected. (\uicontrol {Select Item}) mode, a single item is selected.
\li In the \inlineimage group_selection_selected.png \li In the \inlineimage select_group.png
(\uicontrol {Select Group}) mode, the top level parent of the item (\uicontrol {Select Group}) mode, the top level parent of the item
is selected. This enables you to move, rotate, or scale a group of is selected. This enables you to move, rotate, or scale a group of
items. items.
@@ -127,7 +127,7 @@
or z view axis or on the top, bottom, left, and right clip planes of the or z view axis or on the top, bottom, left, and right clip planes of the
render camera. render camera.
To move items, select \inlineimage move_selected.png To move items, select \inlineimage move_on.png
or press \key W. or press \key W.
To move items along an axis, click the axis and drag the item along the To move items along an axis, click the axis and drag the item along the
@@ -145,7 +145,7 @@
\image studio-3d-editor-rotate.png "3D editor in rotate mode" \image studio-3d-editor-rotate.png "3D editor in rotate mode"
To rotate items, select \inlineimage rotate_selected.png To rotate items, select \inlineimage rotate_on.png
or press \key E. or press \key E.
To rotate an item around an axis, select the axis and drag in the direction To rotate an item around an axis, select the axis and drag in the direction
@@ -157,7 +157,7 @@
\image studio-3d-editor-scale.png "3D editor in scale mode" \image studio-3d-editor-scale.png "3D editor in scale mode"
To scale items, select \inlineimage scale_selected.png To scale items, select \inlineimage scale_on.png
or press \key R. or press \key R.
You can use the scale handles to adjust the local x, y, or z scale of an You can use the scale handles to adjust the local x, y, or z scale of an

View File

@@ -34,6 +34,7 @@ enum InformationName
{ {
NoName, NoName,
NoInformationChange = NoName, NoInformationChange = NoName,
AllStates,
Size, Size,
BoundingRect, BoundingRect,
Transform, Transform,

View File

@@ -1061,6 +1061,7 @@ static QVector<InformationContainer> createInformationVector(const QList<ServerN
informationVector.append(InformationContainer(instance.instanceId(), PenWidth, instance.penWidth())); informationVector.append(InformationContainer(instance.instanceId(), PenWidth, instance.penWidth()));
informationVector.append(InformationContainer(instance.instanceId(), IsAnchoredByChildren, instance.isAnchoredByChildren())); informationVector.append(InformationContainer(instance.instanceId(), IsAnchoredByChildren, instance.isAnchoredByChildren()));
informationVector.append(InformationContainer(instance.instanceId(), IsAnchoredBySibling, instance.isAnchoredBySibling())); informationVector.append(InformationContainer(instance.instanceId(), IsAnchoredBySibling, instance.isAnchoredBySibling()));
informationVector.append(InformationContainer(instance.instanceId(), AllStates, instance.allStates()));
informationVector.append(InformationContainer(instance.instanceId(), HasAnchor, PropertyName("anchors.fill"), instance.hasAnchor("anchors.fill"))); informationVector.append(InformationContainer(instance.instanceId(), HasAnchor, PropertyName("anchors.fill"), instance.hasAnchor("anchors.fill")));
informationVector.append(InformationContainer(instance.instanceId(), HasAnchor, PropertyName("anchors.centerIn"), instance.hasAnchor("anchors.centerIn"))); informationVector.append(InformationContainer(instance.instanceId(), HasAnchor, PropertyName("anchors.centerIn"), instance.hasAnchor("anchors.centerIn")));

View File

@@ -871,6 +871,11 @@ void ObjectNodeInstance::deactivateState()
{ {
} }
QStringList ObjectNodeInstance::allStates() const
{
return {};
}
void ObjectNodeInstance::populateResetHashes() void ObjectNodeInstance::populateResetHashes()
{ {
QmlPrivateGate::registerCustomData(object()); QmlPrivateGate::registerCustomData(object());

View File

@@ -148,6 +148,7 @@ public:
virtual void activateState(); virtual void activateState();
virtual void deactivateState(); virtual void deactivateState();
virtual QStringList allStates() const;
void populateResetHashes(); void populateResetHashes();
bool hasValidResetBinding(const PropertyName &propertyName) const; bool hasValidResetBinding(const PropertyName &propertyName) const;

View File

@@ -232,6 +232,20 @@ QList<QQuickItem *> QuickItemNodeInstance::allItemsRecursive() const
return itemList; return itemList;
} }
QStringList QuickItemNodeInstance::allStates() const
{
QStringList list;
QList<QObject*> stateList = DesignerSupport::statesForItem(quickItem());
for (QObject *state : stateList) {
QQmlProperty property(state, "name");
if (property.isValid())
list.append(property.read().toString());
}
return list;
}
QRectF QuickItemNodeInstance::contentItemBoundingBox() const QRectF QuickItemNodeInstance::contentItemBoundingBox() const
{ {
if (contentItem()) { if (contentItem()) {
@@ -611,8 +625,8 @@ void QuickItemNodeInstance::setPropertyVariant(const PropertyName &name, const Q
if (ignoredProperties().contains(name)) if (ignoredProperties().contains(name))
return; return;
if (name == "state") if (name == "state" && isRootNodeInstance())
return; // states are only set by us return; // states on the root item are only set by us
if (name == "height") { if (name == "height") {
m_height = value.toDouble(); m_height = value.toDouble();
@@ -649,8 +663,8 @@ void QuickItemNodeInstance::setPropertyBinding(const PropertyName &name, const Q
if (ignoredProperties().contains(name)) if (ignoredProperties().contains(name))
return; return;
if (name == "state") if (name == "state" && isRootNodeInstance())
return; // states are only set by us return; // states on the root item are only set by us
if (name.startsWith("anchors.") && isRootNodeInstance()) if (name.startsWith("anchors.") && isRootNodeInstance())
return; return;

View File

@@ -96,6 +96,7 @@ public:
void doComponentComplete() override; void doComponentComplete() override;
QList<QQuickItem*> allItemsRecursive() const override; QList<QQuickItem*> allItemsRecursive() const override;
QStringList allStates() const override;
protected: protected:
explicit QuickItemNodeInstance(QQuickItem*); explicit QuickItemNodeInstance(QQuickItem*);

View File

@@ -199,6 +199,18 @@ Internal::ObjectNodeInstance::Pointer ServerNodeInstance::createInstance(QObject
return instance; return instance;
} }
QString static getErrorString(QQmlEngine *engine, const QString &componentPath)
{
QQmlComponent component(engine, componentPath);
QObject *o = component.create(nullptr);
delete o;
QString s;
for (const QQmlError &error : component.errors())
s.append(error.toString());
return s;
}
ServerNodeInstance ServerNodeInstance::create(NodeInstanceServer *nodeInstanceServer, ServerNodeInstance ServerNodeInstance::create(NodeInstanceServer *nodeInstanceServer,
const InstanceContainer &instanceContainer, const InstanceContainer &instanceContainer,
ComponentWrap componentWrap) ComponentWrap componentWrap)
@@ -215,8 +227,11 @@ ServerNodeInstance ServerNodeInstance::create(NodeInstanceServer *nodeInstanceSe
nodeInstanceServer->sendDebugOutput(DebugOutputCommand::ErrorType, QLatin1String("Custom parser object could not be created."), instanceContainer.instanceId()); nodeInstanceServer->sendDebugOutput(DebugOutputCommand::ErrorType, QLatin1String("Custom parser object could not be created."), instanceContainer.instanceId());
} else if (!instanceContainer.componentPath().isEmpty()) { } else if (!instanceContainer.componentPath().isEmpty()) {
object = Internal::ObjectNodeInstance::createComponent(instanceContainer.componentPath(), nodeInstanceServer->context()); object = Internal::ObjectNodeInstance::createComponent(instanceContainer.componentPath(), nodeInstanceServer->context());
if (object == nullptr) if (object == nullptr) {
nodeInstanceServer->sendDebugOutput(DebugOutputCommand::ErrorType, QString("Component with path %1 could not be created.").arg(instanceContainer.componentPath()), instanceContainer.instanceId()); const QString errors = getErrorString(nodeInstanceServer->engine(), instanceContainer.componentPath());
const QString message = QString("Component with path %1 could not be created.\n\n").arg(instanceContainer.componentPath());
nodeInstanceServer->sendDebugOutput(DebugOutputCommand::ErrorType, message + errors, instanceContainer.instanceId());
}
} else { } else {
object = Internal::ObjectNodeInstance::createPrimitive(QString::fromUtf8(instanceContainer.type()), instanceContainer.majorNumber(), instanceContainer.minorNumber(), nodeInstanceServer->context()); object = Internal::ObjectNodeInstance::createPrimitive(QString::fromUtf8(instanceContainer.type()), instanceContainer.majorNumber(), instanceContainer.minorNumber(), nodeInstanceServer->context());
if (object == nullptr) if (object == nullptr)
@@ -646,6 +661,14 @@ QList<ServerNodeInstance> ServerNodeInstance::stateInstances() const
return m_nodeInstance->stateInstances(); return m_nodeInstance->stateInstances();
} }
QStringList ServerNodeInstance::allStates() const
{
if (isValid())
return m_nodeInstance->allStates();
return {};
}
Internal::ObjectNodeInstance::Pointer ServerNodeInstance::internalInstance() const Internal::ObjectNodeInstance::Pointer ServerNodeInstance::internalInstance() const
{ {
return m_nodeInstance; return m_nodeInstance;

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