Merge remote-tracking branch 'origin/qds/dev'
Change-Id: I91d9877ef6637d21e1106d6d363275295e6b55a3
@@ -79,6 +79,7 @@ IncludeIsMainRegex: '(Test)?$'
|
||||
IndentCaseLabels: false
|
||||
IndentWidth: 4
|
||||
IndentWrappedFunctionNames: false
|
||||
InsertBraces: false
|
||||
JavaScriptQuotes: Leave
|
||||
JavaScriptWrapImports: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
|
||||
1
.gitignore
vendored
@@ -280,7 +280,6 @@ tmp/
|
||||
/tests/manual/ssh/shell/shell
|
||||
/tests/tools/qml-ast2dot/qml-ast2dot
|
||||
/tests/unit/echoserver/echo
|
||||
/tests/unit/unittest/unittest
|
||||
|
||||
# qbs builds
|
||||
/*-debug/
|
||||
|
||||
6
.gitmodules
vendored
@@ -6,9 +6,9 @@
|
||||
path = src/tools/perfparser
|
||||
url = ../perfparser.git
|
||||
ignore = dirty
|
||||
[submodule "googletest"]
|
||||
path = tests/unit/unittest/3rdparty/googletest
|
||||
url = https://github.com/google/googletest.git
|
||||
[submodule "src/libs/qlitehtml"]
|
||||
path = src/libs/qlitehtml
|
||||
url = https://code.qt.io/playground/qlitehtml.git
|
||||
[submodule "googletest"]
|
||||
path = src/libs/3rdparty/googletest
|
||||
url = https://github.com/google/googletest.git
|
||||
|
||||
@@ -1,116 +0,0 @@
|
||||
#.rst:
|
||||
# FindGoogletest
|
||||
# -----------------
|
||||
#
|
||||
# Try to locate the Googletest source files, and then build them as a
|
||||
# static library.
|
||||
#
|
||||
# The ``GOOGLETEST_DIR`` (CMake or Environment) variable should be used
|
||||
# to pinpoint the Googletest source files.
|
||||
#
|
||||
# If found, this will define the following variables:
|
||||
#
|
||||
# ``Googletest_FOUND``
|
||||
# True if the Googletest source package has been found.
|
||||
#
|
||||
# ``Googletest``
|
||||
# Target compiled as static library.
|
||||
#
|
||||
|
||||
find_path(GOOGLE_TEST_INCLUDE_DIR
|
||||
NAMES gtest/gtest.h
|
||||
PATH_SUFFIXES googletest/include
|
||||
HINTS
|
||||
"${GOOGLETEST_DIR}" ENV GOOGLETEST_DIR
|
||||
"${PROJECT_SOURCE_DIR}/googletest"
|
||||
"${PROJECT_SOURCE_DIR}/../googletest"
|
||||
"${PROJECT_SOURCE_DIR}/../../googletest"
|
||||
"${PROJECT_SOURCE_DIR}/tests/unit/unittest/3rdparty/googletest"
|
||||
)
|
||||
|
||||
find_path(GOOGLE_TEST_SRC_ALL
|
||||
NAMES gtest-all.cc
|
||||
PATH_SUFFIXES googletest/src
|
||||
HINTS
|
||||
"${GOOGLETEST_DIR}" ENV GOOGLETEST_DIR
|
||||
"${PROJECT_SOURCE_DIR}/googletest"
|
||||
"${PROJECT_SOURCE_DIR}/../googletest"
|
||||
"${PROJECT_SOURCE_DIR}/../../googletest"
|
||||
"${PROJECT_SOURCE_DIR}/tests/unit/unittest/3rdparty/googletest"
|
||||
)
|
||||
|
||||
|
||||
find_path(GOOGLE_MOCK_INCLUDE_DIR
|
||||
NAMES gmock/gmock.h
|
||||
PATH_SUFFIXES googlemock/include
|
||||
HINTS
|
||||
"${GOOGLETEST_DIR}" ENV GOOGLETEST_DIR
|
||||
"${PROJECT_SOURCE_DIR}/googletest"
|
||||
"${PROJECT_SOURCE_DIR}/../googletest"
|
||||
"${PROJECT_SOURCE_DIR}/../../googletest"
|
||||
"${PROJECT_SOURCE_DIR}/tests/unit/unittest/3rdparty/googletest"
|
||||
)
|
||||
|
||||
find_path(GOOGLE_MOCK_SRC_ALL
|
||||
NAMES gmock-all.cc
|
||||
PATH_SUFFIXES googlemock/src
|
||||
HINTS
|
||||
"${GOOGLETEST_DIR}" ENV GOOGLETEST_DIR
|
||||
"${PROJECT_SOURCE_DIR}/googletest"
|
||||
"${PROJECT_SOURCE_DIR}/../googletest"
|
||||
"${PROJECT_SOURCE_DIR}/../../googletest"
|
||||
"${PROJECT_SOURCE_DIR}/tests/unit/unittest/3rdparty/googletest"
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Googletest
|
||||
DEFAULT_MSG
|
||||
GOOGLE_TEST_INCLUDE_DIR GOOGLE_MOCK_INCLUDE_DIR
|
||||
GOOGLE_TEST_SRC_ALL GOOGLE_MOCK_SRC_ALL
|
||||
)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
if(Googletest_FOUND AND NOT TARGET Googletest)
|
||||
add_library(Googletest STATIC
|
||||
"${GOOGLE_TEST_SRC_ALL}/gtest-all.cc"
|
||||
"${GOOGLE_MOCK_SRC_ALL}/gmock-all.cc"
|
||||
)
|
||||
target_include_directories(Googletest
|
||||
PUBLIC
|
||||
"${GOOGLE_TEST_INCLUDE_DIR}"
|
||||
"${GOOGLE_MOCK_INCLUDE_DIR}"
|
||||
PRIVATE
|
||||
"${GOOGLE_TEST_SRC_ALL}/.."
|
||||
"${GOOGLE_MOCK_SRC_ALL}/.."
|
||||
)
|
||||
target_compile_definitions(Googletest
|
||||
PRIVATE
|
||||
GTEST_HAS_STD_INITIALIZER_LIST_
|
||||
GTEST_LANG_CXX11
|
||||
GTEST_HAS_STD_TUPLE_
|
||||
GTEST_HAS_STD_TYPE_TRAITS_
|
||||
GTEST_HAS_STD_FUNCTION_
|
||||
GTEST_HAS_RTTI
|
||||
GTEST_HAS_STD_BEGIN_AND_END_
|
||||
GTEST_HAS_STD_UNIQUE_PTR_
|
||||
GTEST_HAS_EXCEPTIONS
|
||||
GTEST_HAS_STREAM_REDIRECTION
|
||||
GTEST_HAS_TYPED_TEST
|
||||
GTEST_HAS_TYPED_TEST_P
|
||||
GTEST_HAS_PARAM_TEST
|
||||
GTEST_HAS_DEATH_TEST
|
||||
)
|
||||
set_target_properties(Googletest PROPERTIES AUTOMOC OFF AUTOUIC OFF QT_COMPILE_OPTIONS_DISABLE_WARNINGS ON)
|
||||
set_property(TARGET Googletest PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
target_compile_definitions(Googletest PUBLIC GOOGLE_TEST_IS_FOUND)
|
||||
|
||||
target_link_libraries(Googletest Threads::Threads)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(GOOGLE_TEST_INCLUDE_DIR GOOGLE_MOCK_INCLUDE_DIR
|
||||
GOOGLE_TEST_SRC_ALL GOOGLE_MOCK_SRC_ALL)
|
||||
|
||||
include(FeatureSummary)
|
||||
set_package_properties(Googletest PROPERTIES
|
||||
URL "https://github.com/google/googletest"
|
||||
DESCRIPTION "Google Testing and Mocking Framework")
|
||||
@@ -1,6 +1,6 @@
|
||||
set(IDE_VERSION "4.2.0") # The IDE version.
|
||||
set(IDE_VERSION_COMPAT "4.2.0") # The IDE Compatibility version.
|
||||
set(IDE_VERSION_DISPLAY "4.2.0") # The IDE display version.
|
||||
set(IDE_VERSION "4.3.0") # The IDE version.
|
||||
set(IDE_VERSION_COMPAT "4.3.0") # The IDE Compatibility version.
|
||||
set(IDE_VERSION_DISPLAY "4.3.0") # The IDE display version.
|
||||
set(IDE_COPYRIGHT_YEAR "2023") # The IDE current copyright year.
|
||||
|
||||
set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation.
|
||||
|
||||
|
Before Width: | Height: | Size: 6.0 KiB |
BIN
doc/qtcreator/images/qtcreator-application-output.webp
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 9.9 KiB |
BIN
doc/qtcreator/images/qtcreator-compile-output.webp
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 6.2 KiB |
BIN
doc/qtcreator/images/qtcreator-general-messages.webp
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 44 KiB |
BIN
doc/qtcreator/images/qtcreator-installed-plugins.webp
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 2.0 KiB |
BIN
doc/qtcreator/images/qtcreator-search-results-matches.webp
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 13 KiB |
BIN
doc/qtcreator/images/qtcreator-search-results.webp
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 19 KiB |
BIN
doc/qtcreator/images/qtcreator-to-do-entries.webp
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 32 KiB |
@@ -1,4 +1,4 @@
|
||||
// Copyright (C) 2022 The Qt Company Ltd.
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||
|
||||
// **********************************************************************
|
||||
@@ -11,7 +11,7 @@
|
||||
\previouspage creator-editor-functions.html
|
||||
\page creator-coding-navigating.html
|
||||
\if defined(qtdesignstudio)
|
||||
\nextpage creator-sidebars.html
|
||||
\nextpage creator-views.html
|
||||
\else
|
||||
\nextpage creator-highlighting.html
|
||||
\endif
|
||||
@@ -246,7 +246,12 @@
|
||||
\endlist
|
||||
|
||||
To view the note, move the mouse pointer over the bookmark or open the
|
||||
\uicontrol Bookmarks view in the \l{Working with Sidebars}{sidebar}.
|
||||
\uicontrol Bookmarks view
|
||||
\if defined(qtcreator)
|
||||
in the \l{Show and hide sidebars}{sidebar}.
|
||||
\else
|
||||
in the \l{Managing Workspaces}{workspace}.
|
||||
\endif
|
||||
|
||||
\section2 Navigating Bookmarks
|
||||
|
||||
@@ -358,13 +363,11 @@
|
||||
\QC underlines semantic errors in olive in the C++ code editor. To check the
|
||||
correct paths for includes that are not resolved or that are resolved to the
|
||||
wrong file, select \uicontrol {Project Parts} > \uicontrol {Header Paths}.
|
||||
\endif
|
||||
|
||||
\if defined(qtdesignstudio)
|
||||
\else
|
||||
\section1 Related Topics
|
||||
|
||||
\list
|
||||
\li \l{Working with Sidebars}
|
||||
\li \l{Browsing Project Contents}
|
||||
\li \l{Viewing Output}
|
||||
\endlist
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
|
||||
\li Enter the text you are looking for and click \uicontrol Search.
|
||||
|
||||
\image qtcreator-searchresults.png
|
||||
\image qtcreator-search-results-matches.webp {Found matches in Search Results}
|
||||
|
||||
\l {Search Results} shows a list of files that have the searched text.
|
||||
|
||||
|
||||
@@ -57,3 +57,7 @@
|
||||
\externalpage https://doc.qt.io/QtForMCUs/qtul-renesas-rh850-qsg.html
|
||||
\title Renesas RH850-D1M1A quick start guide
|
||||
*/
|
||||
/*!
|
||||
\externalpage https://doc.qt.io/QtForMCUs/qtul-known-issues.html
|
||||
\title \QMCU Known Issues or Limitations
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||
|
||||
/*!
|
||||
\page creator-how-to-enable-plugins.html
|
||||
\previouspage creator-how-tos.html
|
||||
\nextpage creator-known-issues.html
|
||||
\ingroup creator-how-to-use
|
||||
|
||||
\title Enable and disable plugins
|
||||
|
||||
New \QC plugins are often introduced as \e {experimental plugins} to let you
|
||||
try them out before they are fully supported. Experimental plugins are
|
||||
disabled by default and you must enable them for them to become visible
|
||||
after you restart \QC. By default, all the plugins that the plugin depends
|
||||
on are also enabled.
|
||||
|
||||
You can also disable plugins that you do not use, to streamline \QC.
|
||||
By default, all the plugins that depend on the plugin are also disabled.
|
||||
|
||||
To enable and disable plugins:
|
||||
|
||||
\list 1
|
||||
\li Select \uicontrol Help > \uicontrol {About Plugins}.
|
||||
\li Start typing in the \uicontrol Filter field to find a plugin.
|
||||
\image qtcreator-installed-plugins.webp {Installed Plugins dialog}
|
||||
\li Select the \uicontrol Load check box to enable a plugin, or deselect
|
||||
it to disable a plugin.
|
||||
\li Select \uicontrol OK.
|
||||
\li Select \uicontrol {Restart Now} to restart \QC and have the changes
|
||||
take effect.
|
||||
\endlist
|
||||
|
||||
\sa {Install plugins}{How-to: Install plugins}
|
||||
*/
|
||||
@@ -0,0 +1,43 @@
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||
|
||||
/*!
|
||||
\page creator-how-to-install-plugins.html
|
||||
\previouspage creator-how-tos.html
|
||||
\nextpage creator-known-issues.html
|
||||
\ingroup creator-how-to-use
|
||||
|
||||
\title Install plugins
|
||||
|
||||
\l{https://marketplace.qt.io/}{Qt Marketplace} has links to \QC plugins that
|
||||
you can download and install either for free or for a price set by their
|
||||
publisher. Browse the available plugins in the \uicontrol Marketplace tab
|
||||
in the \uicontrol Welcome mode.
|
||||
|
||||
You can also install plugins from other sources, such as
|
||||
\l{https://github.com/}{GitHub}.
|
||||
|
||||
\note You can install only plugins that your \QC version supports.
|
||||
|
||||
To install plugins:
|
||||
|
||||
\list 1
|
||||
\li Select \uicontrol Help > \uicontrol {About Plugins} >
|
||||
\uicontrol {Install Plugins}.
|
||||
\li In the \uicontrol Source dialog, enter the path to the archive
|
||||
or library that has the plugin.
|
||||
\image qtcreator-install-plugin-source.png
|
||||
\li In the \uicontrol {Install Location} dialog, select
|
||||
\uicontrol {User plugins} to make the plugin available for the
|
||||
current user in all compatible \QC instances or
|
||||
\uicontrol {\QC installation} to make the plugin available for
|
||||
all users of a particular \QC instance.
|
||||
\image qtcreator-install-plugin-location.png
|
||||
\li In the \uicontrol Summary dialog, select \uicontrol Finish to
|
||||
install the plugin.
|
||||
\image qtcreator-install-plugin-summary.png
|
||||
\li Select \uicontrol {Restart Now} to restart \QC and load the plugin.
|
||||
\endlist
|
||||
|
||||
\sa {Enable and disable plugins}{How-to: Enable and disable plugins}
|
||||
*/
|
||||
@@ -64,36 +64,13 @@
|
||||
\section1 Use \QC
|
||||
|
||||
\list
|
||||
\li \l {Enable and disable plugins}
|
||||
\li \l {Find settings files}
|
||||
\li \l {Install plugins}
|
||||
\li \l {Run \QC from the command line}
|
||||
\endlist
|
||||
*/
|
||||
|
||||
/*!
|
||||
\page creator-how-to-switch-between-modes.html
|
||||
\previouspage creator-how-tos.html
|
||||
\nextpage creator-known-issues.html
|
||||
\ingroup creator-how-to-ui
|
||||
|
||||
\title Switch between modes
|
||||
|
||||
\QC uses different modes for different purposes. You can quickly
|
||||
switch between these modes with the following keyboard shortcuts:
|
||||
|
||||
\list
|
||||
|
||||
\li \uicontrol Welcome mode \key Ctrl+1
|
||||
\li \uicontrol Edit mode \key Ctrl+2
|
||||
\li \uicontrol Design mode \key Ctrl+3
|
||||
\li \uicontrol Debug mode \key Ctrl+4
|
||||
\li \uicontrol Projects mode \key Ctrl+5
|
||||
\li \uicontrol Help mode \key Ctrl+6
|
||||
|
||||
\endlist
|
||||
|
||||
For more information about \QC modes, see \l {Selecting Modes}.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\page creator-how-to-move-between-open-files.html
|
||||
\previouspage creator-how-tos.html
|
||||
@@ -216,28 +193,6 @@
|
||||
For more information, see \l{Using Command Line Options}.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\page creator-how-to-show-and-hide-sidebars.html
|
||||
\previouspage creator-how-tos.html
|
||||
\nextpage creator-known-issues.html
|
||||
\ingroup creator-how-to-ui
|
||||
|
||||
\title Show and hide sidebars
|
||||
|
||||
You can toggle the left and right sidebar in some \QC modes.
|
||||
|
||||
To toggle the left sidebar, click \inlineimage icons/leftsidebaricon.png
|
||||
(\uicontrol {Hide Left Sidebar/Show Left Sidebar}) or press \key Alt+0
|
||||
(\key Cmd+0 on \macos).
|
||||
|
||||
To toggle the right sidebar, click \inlineimage icons/rightsidebaricon.png
|
||||
(\uicontrol {Hide Right Sidebar/Show Right Sidebar}) or press
|
||||
\key Alt+Shift+0 (\key Cmd+Shift+0 on \macos).
|
||||
|
||||
For more information on using the sidebars, see
|
||||
\l {Browsing Project Contents}.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\page creator-how-to-move-to-symbols.html
|
||||
\previouspage creator-how-tos.html
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
\section1 Managing Test Suites and Cases
|
||||
|
||||
You can manage Squish test suites and cases in the \uicontrol Squish
|
||||
\l {Working with Sidebars}{view}.
|
||||
\l {Show and hide sidebars}{view}.
|
||||
|
||||
\image qtcreator-squish-view.png "Squish sidebar view"
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
in different build and run \l{glossary-buildandrun-kit}{kits}.
|
||||
|
||||
\note Meson build plugin is disabled by default, see
|
||||
\l{Enabling and Disabling Plugins}.
|
||||
\l{Enable and disable plugins}{How-to: Enable and disable plugins}.
|
||||
|
||||
\section1 Adding Meson Tools
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (C) 2021 The Qt Company Ltd.
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||
|
||||
// **********************************************************************
|
||||
@@ -142,55 +142,16 @@
|
||||
\section1 Managing Plugins
|
||||
|
||||
\QC comes with a set of plugins, some of which are disabled by default.
|
||||
You can enable disabled plugins if you need them and disable plugins you
|
||||
don't need.
|
||||
You can \l{Enable and disable plugins}{enable} disabled plugins if you
|
||||
need them and disable plugins you don't need.
|
||||
|
||||
You can download and install additional plugins from
|
||||
You can \l{Install plugins}{download and install} more plugins from
|
||||
\l{https://marketplace.qt.io/}{Qt Marketplace} or some
|
||||
other source, such as \l{https://github.com/}{GitHub}.
|
||||
|
||||
\section2 Enabling and Disabling Plugins
|
||||
|
||||
New \QC plugins are often introduced as \e {experimental plugins} to let you
|
||||
try them out before they are fully supported. Experimental plugins are
|
||||
disabled by default and you must enable them for them to become visible
|
||||
after you restart \QC. By default, all the plugins that the plugin depends
|
||||
on are also enabled.
|
||||
|
||||
You can also disable plugins that you do not use, to streamline \QC.
|
||||
By default, all the plugins that depend on the plugin are also disabled.
|
||||
|
||||
To enable and disable plugins, select \uicontrol Help >
|
||||
\uicontrol {About Plugins}.
|
||||
|
||||
\image qtcreator-installed-plugins.png "Installed Plugins dialog"
|
||||
|
||||
\section2 Installing Plugins
|
||||
|
||||
Qt Marketplace has links to \QC plugins that you can download and
|
||||
install either for free or for a price set by their publisher. You can
|
||||
browse the available plugins in the \uicontrol Marketplace tab in the
|
||||
Welcome mode.
|
||||
|
||||
\note You can install only plugins that your \QC version supports.
|
||||
|
||||
To install plugins:
|
||||
|
||||
\list 1
|
||||
\li Select \uicontrol Help > \uicontrol {About Plugins} >
|
||||
To install plugins, select \uicontrol Help > \uicontrol {About Plugins} >
|
||||
\uicontrol {Install Plugins}.
|
||||
\li In the \uicontrol Source dialog, enter the path to the archive
|
||||
or library that has the plugin.
|
||||
\image qtcreator-install-plugin-source.png
|
||||
\li In the \uicontrol {Install Location} dialog, select
|
||||
\uicontrol {User plugins} to make the plugin available for the
|
||||
current user in all compatible \QC instances or
|
||||
\uicontrol {\QC installation} to make the plugin available for
|
||||
all users of a particular \QC instance.
|
||||
\image qtcreator-install-plugin-location.png
|
||||
\li In the \uicontrol Summary dialog, select \uicontrol Finish to
|
||||
install the plugin.
|
||||
\image qtcreator-install-plugin-summary.png
|
||||
\li Select \uicontrol {Restart Now} to restart \QC and load the plugin.
|
||||
\endlist
|
||||
*/
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
the application has large image files that would need to be bundled
|
||||
into the resource file before running the application.
|
||||
|
||||
\image qtcreator-application-output.png
|
||||
\image qtcreator-application-output.webp {Application Output view}
|
||||
|
||||
\if defined(qtcreator)
|
||||
For more information on the options you have, see
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
\li \l{IDE Overview}
|
||||
\li \l{User Interface}
|
||||
\list
|
||||
\li \l{Selecting Modes}
|
||||
\li \l{Working with Sidebars}
|
||||
\li \l{Browsing Project Contents}
|
||||
\list
|
||||
\li \l{Projects}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (C) 2022 The Qt Company Ltd.
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||
|
||||
/*!
|
||||
@@ -8,8 +8,7 @@
|
||||
|
||||
\title File System
|
||||
|
||||
If you cannot see a file in the \l Projects view, switch to the
|
||||
\uicontrol {File System} view, which shows all the files in the file system.
|
||||
The \uicontrol {File System} view shows all the files in the file system.
|
||||
|
||||
\note Usually, \l{Searching with the Locator}{searching with the locator}
|
||||
is the fastest way to find a particular project, file, class, or function,
|
||||
@@ -17,12 +16,9 @@
|
||||
to open files from anywhere in the file system.
|
||||
|
||||
\if defined(qtdesignstudio)
|
||||
The following image displays the \uicontrol {File System} view in the
|
||||
\uicontrol Design mode:
|
||||
|
||||
\image qtcreator-filesystem-view-design.png "File System view in the Design mode"
|
||||
\image qtcreator-filesystem-view-design.png {File System view}
|
||||
\else
|
||||
\image qtcreator-filesystem-view.webp "File System view in the sidebar"
|
||||
\image qtcreator-filesystem-view.webp {File System view in the sidebar}
|
||||
\endif
|
||||
|
||||
To move to the root directory of the file system, select \uicontrol Computer
|
||||
@@ -87,19 +83,11 @@
|
||||
\li Collapse all open folders.
|
||||
\endlist
|
||||
|
||||
\if defined(qtcreator)
|
||||
\section1 File System View Toolbar
|
||||
|
||||
\if defined(qtdesignstudio)
|
||||
In the \uicontrol Edit and \uicontrol Debug mode, the
|
||||
\uicontrol {File System} view is displayed in the \l{Working with Sidebars}
|
||||
{sidebar}. It has a toolbar with additional options.
|
||||
|
||||
\image qtcreator-filesystem-view.webp "File System view in the sidebar"
|
||||
\else
|
||||
The toolbar in the \uicontrol {File System} view has additional
|
||||
options.
|
||||
\endif
|
||||
|
||||
|
||||
To manage view contents, select \inlineimage icons/filtericon.png
|
||||
(\uicontrol Options):
|
||||
@@ -116,4 +104,5 @@
|
||||
To stop the synchronization with the file currently open in the
|
||||
editor, deselect \inlineimage icons/linkicon.png
|
||||
(\uicontrol {Synchronize with Editor}).
|
||||
\endif
|
||||
*/
|
||||
|
||||
@@ -1,24 +1,19 @@
|
||||
// Copyright (C) 2020 The Qt Company Ltd.
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||
|
||||
/*!
|
||||
\page creator-sidebars.html
|
||||
\if defined(qtdesignstudio)
|
||||
\previouspage creator-coding-navigating.html
|
||||
\else
|
||||
\previouspage creator-modes.html
|
||||
\endif
|
||||
\nextpage creator-views.html
|
||||
\page creator-how-to-show-and-hide-sidebars.html
|
||||
\previouspage creator-how-tos.html
|
||||
\nextpage creator-known-issues.html
|
||||
\ingroup creator-how-to-ui
|
||||
|
||||
\title Show and hide sidebars
|
||||
|
||||
\title Working with Sidebars
|
||||
In some \l{Switch between modes}{modes}, you can use a left and right
|
||||
sidebar to organize different views into project contents. Only views
|
||||
that are relevant to the mode you are working in are available in it.
|
||||
|
||||
In the \uicontrol Edit mode, you can use a left and right sidebar to
|
||||
organize different views into project contents. Only views that are
|
||||
relevant to the \l{Selecting Modes}{mode} you are working in are
|
||||
available in it.
|
||||
|
||||
You can select views in the sidebar menu (1):
|
||||
Select views in the sidebar menu (1):
|
||||
|
||||
\image qtcreator-sidebar.png
|
||||
|
||||
@@ -27,8 +22,8 @@
|
||||
\list
|
||||
\li To toggle the left sidebar, click \inlineimage icons/leftsidebaricon.png
|
||||
(\uicontrol {Hide Left Sidebar/Show Left Sidebar}) or press
|
||||
\key Alt+0 (\key Cmd+0 on \macos). To toggle the right
|
||||
sidebar, click \inlineimage icons/rightsidebaricon.png
|
||||
\key Alt+0 (\key Cmd+0 on \macos).
|
||||
\li To toggle the right sidebar, click \inlineimage icons/rightsidebaricon.png
|
||||
(\uicontrol {Hide Right Sidebar/Show Right Sidebar}) or press
|
||||
\key Alt+Shift+0 (\key Cmd+Shift+0 on \macos).
|
||||
\li To split a sidebar, click \inlineimage icons/splitbutton_horizontal.png
|
||||
@@ -0,0 +1,75 @@
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||
|
||||
/*!
|
||||
\page creator-how-to-switch-between-modes.html
|
||||
\previouspage creator-how-tos.html
|
||||
\nextpage creator-known-issues.html
|
||||
\ingroup creator-how-to-ui
|
||||
|
||||
\title Switch between modes
|
||||
|
||||
\e Modes let you quickly switch between tasks such as editing
|
||||
project and source files, designing application UIs, configuring projects
|
||||
for building and running, and debugging or analyzing source code.
|
||||
|
||||
To switch between modes:
|
||||
|
||||
\list
|
||||
\li Click the icons on the mode selector.
|
||||
\li Use the \l{keyboard-shortcuts}{corresponding keyboard shortcut}.
|
||||
\endlist
|
||||
|
||||
\table
|
||||
\header
|
||||
\li {2,1} Mode
|
||||
\li Keyboard Shortcut
|
||||
\li Purpose
|
||||
\li Read More
|
||||
\row
|
||||
\li {1,7} \inlineimage qtcreator-mode-selector.png
|
||||
\row
|
||||
\li \uicontrol Welcome
|
||||
\li \key Ctrl+1
|
||||
\li Open projects, tutorials, and examples.
|
||||
\li \l{User Interface}
|
||||
\row
|
||||
\li \uicontrol Edit
|
||||
\li \key Ctrl+2
|
||||
\li Edit project and source files.
|
||||
\li \l{Working in Edit Mode}
|
||||
\row
|
||||
\li \uicontrol Design
|
||||
\li \key Ctrl+3
|
||||
\li Design and develop application user interfaces.
|
||||
This mode is available for UI files.
|
||||
\li \l{Designing User Interfaces}
|
||||
\row
|
||||
\li \uicontrol Debug
|
||||
\li \key Ctrl+4
|
||||
\li Inspect the state of your application while debugging or use code
|
||||
analysis tools to detect memory leaks and profile code.
|
||||
\li \l{Debugging}
|
||||
\row
|
||||
\li \uicontrol Projects
|
||||
\li \key Ctrl+5
|
||||
\li Configure how to build and run projects.
|
||||
This mode is available when a project is open.
|
||||
\li \l{Specifying Build Settings}
|
||||
\row
|
||||
\li \uicontrol Help
|
||||
\li \key Ctrl+6
|
||||
\li Read documentation.
|
||||
\li \l{Using the Help Mode}
|
||||
\endtable
|
||||
|
||||
Some actions in \QC trigger a mode change. For example,
|
||||
selecting \uicontrol {Debug} > \uicontrol {Start Debugging} >
|
||||
\uicontrol {Start Debugging of Startup Project} automatically
|
||||
switches to \uicontrol {Debug} mode.
|
||||
|
||||
To hide the mode selector and to save space on the display, select
|
||||
\uicontrol View > \uicontrol {Mode Selector Style} > \uicontrol Hidden.
|
||||
To only show icons on the mode selector, select the \uicontrol {Icons Only}
|
||||
style.
|
||||
*/
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (C) 2022 The Qt Company Ltd.
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||
|
||||
/*!
|
||||
@@ -13,6 +13,7 @@
|
||||
\title Projects
|
||||
|
||||
The \uicontrol Projects view displays projects in a project tree.
|
||||
|
||||
The project tree has a list of all projects open in the current
|
||||
\l{Managing Sessions}{session}. For each project, the tree visualizes
|
||||
the build system structure of the project and lists all files that
|
||||
@@ -23,12 +24,9 @@
|
||||
or almost anything else in your project.
|
||||
|
||||
\if defined(qtdesignstudio)
|
||||
The following image displays the \uicontrol Projects view in the
|
||||
\uicontrol Design mode:
|
||||
|
||||
\image qtcreator-projects-view-design.png "Projects view in the Design mode"
|
||||
\image qtcreator-projects-view-design.png {Projects view}
|
||||
\else
|
||||
\image qtcreator-projects-view-edit.png "Projects view in the sidebar"
|
||||
\image qtcreator-projects-view-edit.png {Projects view in the sidebar}
|
||||
\endif
|
||||
|
||||
You can use the project tree in the following ways:
|
||||
@@ -37,8 +35,11 @@
|
||||
\li To open files that belong to a \l{Creating Projects}{project},
|
||||
double-click them in the project tree. Files open in the
|
||||
appropriate editor, according to the file type. For example, code
|
||||
source files open in the code editor. Use the \l{Selecting Modes}
|
||||
{mode selector} to open the current file in another editor.
|
||||
source files open in the code editor.
|
||||
\if defined(qtcreator)
|
||||
Use the \l{Switch between modes} {mode selector} to open the current
|
||||
file in another editor.
|
||||
\endif
|
||||
\li To bring up a \l{Projects View Context Menu}{context menu}
|
||||
that has the actions most commonly needed, right-click an
|
||||
item in the project tree. For example, through the menu of
|
||||
@@ -51,6 +52,9 @@
|
||||
configuration files.
|
||||
\endlist
|
||||
|
||||
\note If you cannot see a file in the \l Projects view, switch to the
|
||||
\uicontrol {File System} view, which shows all the files in the file system.
|
||||
|
||||
\section1 Projects View Context Menu
|
||||
|
||||
The \uicontrol Projects view has context menus for managing projects,
|
||||
@@ -58,8 +62,10 @@
|
||||
projects and subprojects:
|
||||
|
||||
\list
|
||||
\if defined(qtcreator)
|
||||
\li Set a project as the active project.
|
||||
\li Execute the \uicontrol Build menu commands.
|
||||
\endif
|
||||
\li Execute \uicontrol Build menu commands.
|
||||
\li Create new files. For more information, see
|
||||
\if defined(qtdesignstudio)
|
||||
\l{Adding Files to Projects}.
|
||||
@@ -106,18 +112,10 @@
|
||||
the \l {File System} view. To view a project in it, select
|
||||
\uicontrol {Show in File System View}.
|
||||
|
||||
\if defined(qtcreator)
|
||||
\section1 Projects View Toolbar
|
||||
|
||||
\if defined(qtdesignstudio)
|
||||
In the \uicontrol Edit and \uicontrol Debug mode, the
|
||||
\l{Working with Sidebars}{sidebar} has the \uicontrol Projects
|
||||
view. It has a toolbar with additional options.
|
||||
|
||||
\image qtcreator-projects-view-edit.png "Projects view in the sidebar"
|
||||
\else
|
||||
The toolbar in the \uicontrol Projects view has additional options.
|
||||
\endif
|
||||
|
||||
|
||||
To filter view contents, select \inlineimage icons/filtericon.png
|
||||
(\uicontrol {Filter Tree}):
|
||||
@@ -140,7 +138,6 @@
|
||||
currently opened in the editor, deselect \inlineimage icons/linkicon.png
|
||||
(\uicontrol {Synchronize with Editor}).
|
||||
|
||||
\if defined(qtcreator)
|
||||
Some build systems support adding and removing files to a project in \QC
|
||||
(currently qmake and Qbs). The faithful display of the project structure
|
||||
enables you to specify exactly where to place a new file in the build system.
|
||||
@@ -152,8 +149,5 @@
|
||||
from the version control system in brackets after the project name.
|
||||
\QC currently implements this for Git (the view displays the branch name
|
||||
or a tag) and ClearCase (the view displays the branch name).
|
||||
\else
|
||||
If the project is under Git version control, you can see the currently
|
||||
checked out branch or tag in brackets after the project name.
|
||||
\endif
|
||||
*/
|
||||
|
||||
@@ -11,10 +11,11 @@
|
||||
\page creator-quick-tour.html
|
||||
\if defined(qtdesignstudio)
|
||||
\previouspage {Tutorials}
|
||||
\nextpage creator-using-qt-quick-designer.html
|
||||
\else
|
||||
\previouspage creator-overview.html
|
||||
\nextpage creator-views.html
|
||||
\endif
|
||||
\nextpage creator-modes.html
|
||||
|
||||
\title User Interface
|
||||
|
||||
@@ -34,7 +35,7 @@
|
||||
\li Mode selector
|
||||
\li Perform a particular task, such as designing the UI, writing code, or
|
||||
debugging the application.
|
||||
\li \l{Selecting Modes}
|
||||
\li \l{Switch between modes}
|
||||
\row
|
||||
\li \inlineimage numbers/02.png
|
||||
\li Kit selector
|
||||
@@ -81,9 +82,11 @@
|
||||
For information about new features and bug fixes in each \QC release,
|
||||
select \uicontrol Help > \uicontrol {Change Log}.
|
||||
|
||||
\sa {Working with Sidebars}, {Browsing Project Contents}
|
||||
\sa {Show and hide sidebars}, {Browsing Project Contents}
|
||||
\sa {Use the UI}{How-to: Use the UI}
|
||||
|
||||
\else
|
||||
|
||||
When you start \QC, it opens to the \uicontrol Welcome mode, where you can:
|
||||
|
||||
\list
|
||||
@@ -139,91 +142,6 @@
|
||||
\endif
|
||||
*/
|
||||
|
||||
/*!
|
||||
\page creator-modes.html
|
||||
\previouspage creator-quick-tour.html
|
||||
\if defined(qtdesignstudio)
|
||||
\nextpage creator-using-qt-quick-designer.html
|
||||
\else
|
||||
\nextpage creator-sidebars.html
|
||||
\endif
|
||||
|
||||
\title Selecting Modes
|
||||
|
||||
\image qtcreator-mode-selector.png
|
||||
|
||||
\if defined(qtcreator)
|
||||
The mode selector allows you to quickly switch between tasks such as editing
|
||||
project and source files, designing application UIs, configuring projects for
|
||||
building and running, and debugging your applications. To change
|
||||
modes, click the icons, or use the \l{keyboard-shortcuts}
|
||||
{corresponding keyboard shortcut}.
|
||||
|
||||
To hide the mode selector and to save space on the display, select
|
||||
\uicontrol View > \uicontrol {Mode Selector Style} > \uicontrol Hidden.
|
||||
To only show icons on the mode selector, select the \uicontrol {Icons Only}
|
||||
style.
|
||||
\endif
|
||||
|
||||
\if defined(qtdesignstudio)
|
||||
The mode selector is hidden by default.
|
||||
|
||||
To show the mode selector, go to \uicontrol Views >
|
||||
\uicontrol {Mode Selector Style} and select \uicontrol {Icons and Text}
|
||||
or \uicontrol {Icons Only}.
|
||||
\endif
|
||||
|
||||
|
||||
You can use \QC in the following modes:
|
||||
|
||||
\list
|
||||
|
||||
\li \uicontrol {\l{User Interface}{Welcome}} mode for opening projects,
|
||||
tutorials, and examples.
|
||||
|
||||
\li \uicontrol{\l{Coding}{Edit}} mode for editing project and source
|
||||
files.
|
||||
|
||||
\if defined(qtcreator)
|
||||
\li \uicontrol{\l{Designing User Interfaces}{Design}}
|
||||
mode for designing and developing application user interfaces.
|
||||
This mode is available for UI files.
|
||||
\else
|
||||
\li \uicontrol{\l{Design Views}{Design}}
|
||||
mode for designing and developing application user interfaces.
|
||||
As a designer, you'll do most of your work in this mode.
|
||||
\endif
|
||||
|
||||
\if defined(qtcreator)
|
||||
\li \uicontrol{\l{Debugging}{Debug}}
|
||||
\else
|
||||
\li \uicontrol {\l{Debugging and Profiling}{Debug}}
|
||||
\endif
|
||||
mode for inspecting the state of your
|
||||
application while debugging and for using code analysis tools
|
||||
to detect memory leaks and profile code.
|
||||
|
||||
\if defined(qtcreator)
|
||||
\li \uicontrol{\l{Specifying Build Settings}{Projects}} mode
|
||||
for configuring project building and execution.
|
||||
\else
|
||||
\li \uicontrol{\l{Selecting the Preview Tool}{Projects}} mode
|
||||
for selecting the tool to use for live preview.
|
||||
\endif
|
||||
This mode is available when a project is open.
|
||||
|
||||
\li \uicontrol{\l{Using the Help Mode}{Help}} mode for viewing
|
||||
documentation.
|
||||
|
||||
\endlist
|
||||
|
||||
\if defined(qtcreator)
|
||||
Certain actions in \QC trigger a mode change. Clicking on \uicontrol {Debug} >
|
||||
\uicontrol {Start Debugging} > \uicontrol {Start Debugging} automatically switches to
|
||||
\uicontrol {Debug} mode.
|
||||
\endif
|
||||
*/
|
||||
|
||||
/*!
|
||||
\page creator-output-panes.html
|
||||
\if defined(qtdesignstudio)
|
||||
@@ -236,9 +154,9 @@
|
||||
|
||||
\title Viewing Output
|
||||
|
||||
\image qtcreator-general-messages.png "General Messages"
|
||||
\image qtcreator-general-messages.webp {General Messages}
|
||||
|
||||
The taskbar in \QC can display following types of output:
|
||||
You can view the following types of output:
|
||||
|
||||
\list
|
||||
|
||||
@@ -276,7 +194,12 @@
|
||||
|
||||
\endlist
|
||||
|
||||
Output is available on the taskbar in all \l{Selecting Modes}{modes}.
|
||||
Output is available on the taskbar in all
|
||||
\if defined(qtcreator)
|
||||
\l{Switch between modes}{modes}.
|
||||
\else
|
||||
\l{Mode}{modes}.
|
||||
\endif
|
||||
|
||||
\image qtcreator-output-panes-taskbar.webp "Output on the taskbar"
|
||||
|
||||
@@ -441,7 +364,7 @@
|
||||
In \uicontrol{Search Results}, you can search through projects, files on
|
||||
a file system or the currently open files:
|
||||
|
||||
\image qtcreator-search-results.png "Search Results"
|
||||
\image qtcreator-search-results.webp {Search Results - criteria}
|
||||
|
||||
The search history (1) stores the search results. You can select earlier
|
||||
searches from the history.
|
||||
@@ -449,7 +372,7 @@
|
||||
The figure below shows an example search result for all
|
||||
occurrences of the search string in the specified directory.
|
||||
|
||||
\image qtcreator-searchresults.png
|
||||
\image qtcreator-search-results-matches.webp {Search Results - matches found}
|
||||
|
||||
For more information about the different search options, see
|
||||
\l {Finding and Replacing}.
|
||||
@@ -459,7 +382,7 @@
|
||||
\uicontrol{Application Output} displays the status of a program when
|
||||
you execute it, and the debug output.
|
||||
|
||||
\image qtcreator-application-output.png
|
||||
\image qtcreator-application-output.webp {Application Output}
|
||||
|
||||
\if defined(qtcreator)
|
||||
If you specify command line arguments in the run settings that are passed
|
||||
@@ -485,7 +408,7 @@
|
||||
The \uicontrol{Compile Output} is a more detailed version of information
|
||||
displayed in \l Issues.
|
||||
|
||||
\image qtcreator-compile-output.png "Compile Output"
|
||||
\image qtcreator-compile-output.webp {Compile Output}
|
||||
|
||||
Double-click on a file name in an error message to open the file in the
|
||||
code editor.
|
||||
@@ -636,13 +559,13 @@
|
||||
subproject. Click the icons on the toolbar to show only the selected
|
||||
keywords.
|
||||
|
||||
\image qtcreator-todo-pane.png
|
||||
\image qtcreator-to-do-entries.webp {To-Do Entries}
|
||||
|
||||
To add keywords, select \uicontrol Edit > \uicontrol Preferences >
|
||||
\uicontrol {To-Do} > \uicontrol Add. Set an icon and a line background color
|
||||
for the keyword.
|
||||
|
||||
\image qtcreator-todo-options.png "To-Do preferences"
|
||||
\image qtcreator-todo-options.png {To-Do preferences}
|
||||
|
||||
To change the icon and line background color of the selected keyword, select
|
||||
\uicontrol Edit.
|
||||
@@ -659,7 +582,7 @@
|
||||
To exclude files from scanning, select \uicontrol {Project Settings} >
|
||||
\uicontrol {To-Do} in the \uicontrol Projects mode.
|
||||
|
||||
\image qtcreator-todo-excluded-files.png "Excluded Files in To-Do preferences"
|
||||
\image qtcreator-todo-excluded-files.png {Excluded Files in To-Do preferences}
|
||||
|
||||
Select \uicontrol Add and double-click the placeholder text in
|
||||
\uicontrol {Exclude Files} to enter a regular expression that
|
||||
|
||||
@@ -1,26 +1,25 @@
|
||||
// Copyright (C) 2021 The Qt Company Ltd.
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||
|
||||
/*!
|
||||
\page creator-views.html
|
||||
\previouspage creator-sidebars.html
|
||||
\if defined(qtdesignstudio)
|
||||
\previouspage creator-coding-navigating.html
|
||||
\nextpage creator-output-panes.html
|
||||
\else
|
||||
\previouspage creator-quick-tour.html
|
||||
\nextpage creator-projects-view.html
|
||||
\endif
|
||||
|
||||
\title Browsing Project Contents
|
||||
|
||||
You can organize \QC views in \l {Working with Sidebars}{sidebars} or as
|
||||
\if defined(qtdesignstudio)
|
||||
\l {Managing Workspaces}{workspaces},
|
||||
You can organize \QDS views as \l {Managing Workspaces}{workspaces}.
|
||||
\else
|
||||
workspaces
|
||||
You can organize \QC views in \l {Show and hide sidebars}{sidebars} or as
|
||||
workspaces, depending on the \l{Switch between modes}{mode} you are working
|
||||
in. Only views that are relevant to a mode are available in it.
|
||||
\endif
|
||||
depending on the \l{Selecting Modes}
|
||||
{mode} you are working in. Only views that are relevant to a mode are
|
||||
available in it.
|
||||
|
||||
\note Usually, \l{Searching with the Locator}{searching with the locator}
|
||||
is the fastest way to find a particular project, file, class, or function,
|
||||
|
||||
@@ -54,6 +54,7 @@ excludedirs += ../../qtcreator/examples/accelbubble \
|
||||
../../qtcreator/src/python \
|
||||
../../qtcreator/src/qnx \
|
||||
../../qtcreator/src/qtquick/creator-only \
|
||||
../../qtcreator/src/user-interface/creator-only \
|
||||
../../qtcreator/src/vcs/creator-only \
|
||||
../../qtcreator/src/widgets \
|
||||
../../qtcreator/src/webassembly
|
||||
|
||||
@@ -14,7 +14,7 @@ int main(int argc, char *argv[])
|
||||
QGuiApplication app(argc, argv);
|
||||
|
||||
QQmlApplicationEngine engine;
|
||||
const QUrl url(u"qrc:Main/main.qml"_qs);
|
||||
const QUrl url(u"qrc:/qt/qml/Main/main.qml"_qs);
|
||||
QObject::connect(
|
||||
&engine, &QQmlApplicationEngine::objectCreated, &app,
|
||||
[url](QObject *obj, const QUrl &objUrl) {
|
||||
|
||||
120
doc/qtdesignstudio/examples/doc/3DsceneTutorial.qdoc
Normal file
@@ -0,0 +1,120 @@
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||
|
||||
/*!
|
||||
\page 3d-scene-tutorial.html
|
||||
\ingroup gstutorials
|
||||
|
||||
\title Setting up a 3D Scene
|
||||
\sa {Content Library}
|
||||
\brief Illustrates how to set up a 3D scene with, for example, lights, models, and materials in
|
||||
\QDS.
|
||||
|
||||
\image 3d-scene-tutorial.webp
|
||||
|
||||
The \e {Setting up a 3D Scene} tutorial illustrates how you can set up and improve a 3D
|
||||
scene with the following:
|
||||
\list
|
||||
\li 3D models
|
||||
\li Materials
|
||||
\li Lights
|
||||
\li Environmental lights
|
||||
\li Background images
|
||||
\endlist
|
||||
|
||||
The assets you use in this tutorial are available in \uicontrol {Content Library}.
|
||||
|
||||
To follow this tutorial, you need to first download the starting project from
|
||||
\l{https://git.qt.io/public-demos/qtdesign-studio/-/tree/master/tutorial%20projects/3Dscene%20tutorial/Start}{here}.
|
||||
|
||||
Download the completed project from
|
||||
\l{https://git.qt.io/public-demos/qtdesign-studio/-/tree/master/tutorial%20projects/3Dscene%20tutorial/Completed/}{here}.
|
||||
|
||||
This tutorial requires that you know the basics of \QDS, see
|
||||
\l{Getting Started}.
|
||||
|
||||
\section1 The Starting Project
|
||||
|
||||
The starting project consists of an animated 3D model of a ball bearing. Control the animations
|
||||
with a slider and a switch in the user interface.
|
||||
|
||||
Besides the 3D model, the 3D scene also has the default camera and the default directional
|
||||
light.
|
||||
|
||||
\section1 Adding Materials to the 3D Models
|
||||
|
||||
First, use materials from \uicontrol {Content Library} on the ball bearing.
|
||||
|
||||
\list 1
|
||||
\li In the \uicontrol 3D view, right-click the ball bearing and select
|
||||
\uicontrol {Edit Component}.
|
||||
\image 3d-scene-edit-component-menu.png
|
||||
\li From \uicontrol {Content Library}, drag materials to the different parts of the ball
|
||||
bearing in the \uicontrol Navigator view.
|
||||
Drag the following materials to the following parts:
|
||||
\list
|
||||
\li Chrome to \e inner_race and \e outer_race.
|
||||
\li Copper to \e balls.
|
||||
\li Gold to \e retainer.
|
||||
\li Carbon Fiber to \e shield_left and \e shield_right.
|
||||
\endlist
|
||||
\note The first time you use an asset from \uicontrol {Content Library}, you need to
|
||||
download it.
|
||||
\image 3d-scene-drag-material.png
|
||||
\li Select \e {Screen01.ui.qml} in the breadcrumb in the top menu bar to return to the 3D
|
||||
scene.
|
||||
\image 3d-scene-bread-crumb.png
|
||||
\endlist
|
||||
When you run the application or live preview, notice that you don't see much of the materials.
|
||||
The next step is to set up the environmental light.
|
||||
|
||||
\section1 Adding Environmental Lighting to the Scene
|
||||
|
||||
Environmental lighting is a good way to create a realistic light for your scene.
|
||||
|
||||
\list 1
|
||||
\li In \uicontrol {Content Library}, go to the \uicontrol Environments tab.
|
||||
\li Right-click the image \e BasicLights3_4k.hdr and select \uicontrol {Add Light Probe}.
|
||||
\image 3d-scene-add-light-probe.webp
|
||||
Setting an image as a light probe for a scene adds the image as the source for the image-based
|
||||
lighting and also sets it as a skybox, meaning that the same image is used as the background
|
||||
in the scene.
|
||||
\endlist
|
||||
|
||||
When you run the application, notice an improvement in the scene lighting.
|
||||
|
||||
Next, adjust the environmental light. As you will add a background image to the scene later,
|
||||
you don't want to use the skybox.
|
||||
\list 1
|
||||
\li In the \uicontrol Navigator view, select \e sceneEnvironment.
|
||||
\li In the \uicontrol Properties view, set \uicontrol {Background Mode} to
|
||||
\uicontrol Transparent.
|
||||
\endlist
|
||||
|
||||
You also want to increase the brightness of the light a bit. In the \uicontrol Properties view,
|
||||
set \uicontrol Exposure to 10.
|
||||
|
||||
\section2 Adding a Background Image to the Scene
|
||||
|
||||
In the final step of this tutorial, you add a background image to your scene.
|
||||
|
||||
\list 1
|
||||
\li Go to the \uicontrol Textures tab in \uicontrol {Content Library}.
|
||||
\li Right-click the image \e 4kScratchySurface.png and select \uicontrol {Add Texture}
|
||||
\image 3d-scene-add-texture.webp
|
||||
This adds the image as a texture to the project. It is now available in the \uicontrol Assets
|
||||
view.
|
||||
\li From the \uicontrol Assets view, drag \e 4KScratchySurface.png to \e Rectangle in the
|
||||
\uicontrol Navigator view.
|
||||
\li Go to the \uicontrol Layout tab in \uicontrol Properties and set \uicontrol Anchors to
|
||||
\uicontrol FillParentComponent.
|
||||
\image 3d-scene-fill-parent.png
|
||||
\li Go to the \uicontrol Image tab and set \uicontrol {Fill Mode} to \uicontrol Stretch.
|
||||
\li The background is rendered on top of the 3D scene as it is located at the bottom of the
|
||||
\uicontrol Navigator view.
|
||||
With the background image selected, select the down arrow to move it to the top of the
|
||||
hierarchy.
|
||||
\image 3d-scene-navigator-background.png
|
||||
\endlist
|
||||
|
||||
*/
|
||||
|
After Width: | Height: | Size: 53 KiB |
BIN
doc/qtdesignstudio/examples/doc/images/3d-scene-add-texture.webp
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
doc/qtdesignstudio/examples/doc/images/3d-scene-bread-crumb.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 12 KiB |
BIN
doc/qtdesignstudio/examples/doc/images/3d-scene-fill-parent.png
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
BIN
doc/qtdesignstudio/examples/doc/images/3d-scene-tutorial.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
doc/qtdesignstudio/examples/doc/images/robot-arm-components.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
doc/qtdesignstudio/examples/doc/images/robotarm-3d-view.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
BIN
doc/qtdesignstudio/examples/doc/images/robotarm-example.webp
Normal file
|
After Width: | Height: | Size: 16 KiB |
@@ -275,8 +275,7 @@
|
||||
\li In \uicontrol Component > \uicontrol ID, enter \e username.
|
||||
\li In \uicontrol {Button Content} > \uicontrol Text, enter
|
||||
\e {Username or Email} and select \uicontrol tr to mark the text
|
||||
\l {Internationalization and Localization with Qt Quick}
|
||||
{translatable}.
|
||||
\l {Mark Strings for Translation}{translatable}.
|
||||
\li Select the second EntryField instance, and change its ID to
|
||||
\e password and text to \e Password. Again, mark the text
|
||||
translatable.
|
||||
|
||||
97
doc/qtdesignstudio/examples/doc/robotarm.qdoc
Normal file
@@ -0,0 +1,97 @@
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||
|
||||
/*!
|
||||
\page robotarm-example.html
|
||||
\ingroup gstutorials
|
||||
|
||||
\title Creating a C++ Backend for a \QDS Application
|
||||
|
||||
\brief Illustrates how to create an application in \QDS and add a backend
|
||||
in Qt Creator.
|
||||
|
||||
\image robotarm-example.webp
|
||||
|
||||
The \e Robotarm example demonstrates adding a C++ backend to a 3D project created in \QDS.
|
||||
|
||||
The example itself consists of an interactive industrial robot arm in a Qt Quick 3D scene.
|
||||
The 2D UI to control the robot arm is implemented using Qt Quick Controls.
|
||||
|
||||
You can open the example from the \uicontrol Examples tab on the \uicontrol Welcome page
|
||||
in \QDS.
|
||||
|
||||
To complete this tutorial, you need experience in using \QDS and Qt Creator as well as knowledge
|
||||
in C++ programming.
|
||||
|
||||
\section1 The Designer-Developer Workflow
|
||||
|
||||
This section describes the high-level steps for creating the robot arm example.
|
||||
|
||||
\section2 Creating the User Interface
|
||||
|
||||
First, the designer creates the user interface in \QDS.
|
||||
|
||||
\list 1
|
||||
\li Create a new 3D project.
|
||||
\li Import the 3D asset (RoboticArm).
|
||||
\li Create the following custom components:
|
||||
\list
|
||||
\li NodeIndicator: This component consists of a rounded rectangle and a label. It is used
|
||||
to indicate which joint in the robotic arm is currently active. Located in the 3D
|
||||
scene, it follows the movement of the 3D model.
|
||||
\li LabeledSlider: This component is a slider with a label. It is connected to the
|
||||
rotation of the different robot arm parts so that you can use it to control the rotation
|
||||
of those parts.
|
||||
\li Toggle: This component consists of a switch and a label. It is used in two places; to
|
||||
toggle dark mode and to toggle the claw of the robotic arm.
|
||||
\li Backend: This serves as a mock backend for the \QDS application. Once you open,
|
||||
compile, and run the application in Qt Creator, it uses the C++ backend.
|
||||
\endlist
|
||||
\li Add the 3D model and lights to the \uicontrol View3D scene.
|
||||
\image robotarm-3d-view.png
|
||||
\li Create the 2D UI controls:
|
||||
\list
|
||||
\li Four buttons for preset positions. As you can see from the \uicontrol Connections tab
|
||||
in the \uicontrol Connections view, each button changes the rotation of the robot arm
|
||||
parts.
|
||||
\image robotarm-button-connections.png
|
||||
\li Four sliders for controlling the robot arm parts individually. The \uicontrol Backend
|
||||
component uses these sliders to control the robot arm position.
|
||||
\li A switch to control the robot arm claw. This is also done through the
|
||||
\uicontrol Backend component.
|
||||
\li A switch to toggle dark mode of the application.
|
||||
\li A label to display the status of the robot arm through the \uicontrol Backend
|
||||
component.
|
||||
\endlist
|
||||
\endlist
|
||||
|
||||
\section2 Creating the C++ Backend
|
||||
|
||||
With the frontend and user interface created, it is time to create the C++ backend.
|
||||
|
||||
To open the project in Qt Creator:
|
||||
\list 1
|
||||
\li Open \c CMakeLists.txt located in the root folder of the robot arm example. This is the
|
||||
CMake project file.
|
||||
\li In Qt Creator, add the empty C++ backend classes in the \c backend folder.
|
||||
\li Ensure that the \c CMakeLists.txt file in the \c backend folder has the classes in it. It
|
||||
should look something like this:
|
||||
\code
|
||||
find_package(Qt6 REQUIRED COMPONENTS Gui)
|
||||
|
||||
qt_add_qml_module(backend
|
||||
URI Backend
|
||||
VERSION 1.0
|
||||
SOURCES
|
||||
animatedparam.cpp
|
||||
animatedparam.h
|
||||
backend.cpp
|
||||
backend.h
|
||||
)
|
||||
|
||||
target_link_libraries(backend PRIVATE Qt6::Gui)
|
||||
\endcode
|
||||
\li Add the backend logic to the created backend classes.
|
||||
\endlist
|
||||
|
||||
*/
|
||||
BIN
doc/qtdesignstudio/images/bake-lights-dialog.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
doc/qtdesignstudio/images/qds-front-advanced.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
doc/qtdesignstudio/images/qds-front-gs.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
doc/qtdesignstudio/images/qds-front-help.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
doc/qtdesignstudio/images/qds-front-preview.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
doc/qtdesignstudio/images/qds-front-projects.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
doc/qtdesignstudio/images/qds-front-ui.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
doc/qtdesignstudio/images/qds-studio-3d-scenes.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
doc/qtdesignstudio/images/qds-studio-animation.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
@@ -69,15 +69,13 @@
|
||||
\c qsTrId(). Select \uicontrol Edit > \uicontrol Preferences >
|
||||
\uicontrol {Qt Quick} > \uicontrol {Qt Quick Designer}, and then select the
|
||||
\uicontrol {qsTrId()} radio button in the \uicontrol Internationalization
|
||||
group. For more information about text ID based translations, see
|
||||
\l {Qt Linguist Manual: Text ID Based Translations}.
|
||||
group. For more information, see \l {Text ID based translations}.
|
||||
|
||||
To preserve the context when editing the text or to change the context
|
||||
by setting a binding on the text property, change the default call to
|
||||
\c qsTranslate() by selecting the \uicontrol {qsTranslate()} radio button.
|
||||
|
||||
For more information, see
|
||||
\l {Internationalization and Localization with Qt Quick}.
|
||||
For more information, see \l {Mark Strings for Translation}.
|
||||
|
||||
\section1 Character Properties
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/*!
|
||||
\previouspage studio-on-mcus.html
|
||||
\page studio-compatibility-with-mcu-sdks.html
|
||||
\nextpage studio-help.html
|
||||
\nextpage studio-features-on-mcu-projects.html
|
||||
|
||||
\title \QDS Version Compatibility with \QMCU SDKs
|
||||
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||
|
||||
/*!
|
||||
\previouspage studio-compatibility-with-mcu-sdks.html
|
||||
\page studio-features-on-mcu-projects.html
|
||||
\nextpage studio-help.html
|
||||
|
||||
\title \QDS Features on MCU Projects
|
||||
|
||||
The table below provides a summary of how the key \QDS features are supported
|
||||
for developing MCU projects.
|
||||
|
||||
\table
|
||||
\header
|
||||
\li View
|
||||
\li Fully Supported
|
||||
\li Partially Supported
|
||||
\li Not Supported
|
||||
\li Comments
|
||||
\row
|
||||
\li \l 2D
|
||||
\li \b X
|
||||
\li \b -
|
||||
\li \b -
|
||||
\li A scene in the \uicontrol 2D view is rendered by the regular Qt Quick
|
||||
and QML, and not as \QUL and \QMCU, so some imperfections or inaccuracies
|
||||
can occur.
|
||||
\row
|
||||
\li \l 3D
|
||||
\li \b -
|
||||
\li \b -
|
||||
\li \b X
|
||||
\li The \uicontrol 3D view is not a part of \QUL or \QMCU.
|
||||
\row
|
||||
\li \l {Material Editor and Browser}
|
||||
\li \b -
|
||||
\li \b -
|
||||
\li \b X
|
||||
\li The \uicontrol {Material Editor} and \uicontrol {Material Browser} views
|
||||
are not a part of \QUL or \QMCU.
|
||||
\row
|
||||
\li \l {Components}
|
||||
\li \b X
|
||||
\li \b -
|
||||
\li \b -
|
||||
\li Shows only the components and modules available for MCU projects.
|
||||
\row
|
||||
\li \l {Assets}
|
||||
\li \b X
|
||||
\li \b -
|
||||
\li \b -
|
||||
\li Shows all the listed assets in the \c QmlProject file.
|
||||
\row
|
||||
\li \l {Navigator}
|
||||
\li \b X
|
||||
\li \b -
|
||||
\li \b -
|
||||
\li Displays the composition of the current component file as a tree
|
||||
structure.
|
||||
\row
|
||||
\li \l {Properties}
|
||||
\li \b X
|
||||
\li \b -
|
||||
\li \b -
|
||||
\li Shows only the preset properties available for MCU projects (such as
|
||||
by Qt Quick and its modules).
|
||||
\row
|
||||
\li \l {Connections}
|
||||
\li \b X
|
||||
\li \b -
|
||||
\li \b -
|
||||
\li The \uicontrol Connections view displays all signal handlers in the
|
||||
current file but it doesn't filter available signals, so you can still
|
||||
see and select signals that are available in Qt Quick, but not in \QUL.
|
||||
\row
|
||||
\li \l {States}
|
||||
\li \b X
|
||||
\li \b -
|
||||
\li \b -
|
||||
\li The feature is fully supported as such, but there are some
|
||||
limitations listed in \l {\QMCU Known Issues or Limitations}.
|
||||
\row
|
||||
\li \l {Transitions}
|
||||
\li \b X
|
||||
\li \b -
|
||||
\li \b -
|
||||
\li \b -
|
||||
\row
|
||||
\li \l {Translations}
|
||||
\li \b -
|
||||
\li \b -
|
||||
\li \b X
|
||||
\li \b -
|
||||
\row
|
||||
\li \l {Timeline}
|
||||
\li \b X
|
||||
\li \b -
|
||||
\li \b -
|
||||
\li \b -
|
||||
\row
|
||||
\li \l {Curves}
|
||||
\li \b -
|
||||
\li \b X
|
||||
\li \b -
|
||||
\li Linear interpolation works, but \QMCU does not support the
|
||||
\c easing.bezierCurve property of a keyframe.
|
||||
\row
|
||||
\li \l Code
|
||||
\li \b X
|
||||
\li \b -
|
||||
\li \b -
|
||||
\li The \uicontrol Code view uses regular Qt Quick instead of \QUL, so it may
|
||||
not show an error if you are using or assigning an unsupported property.
|
||||
\row
|
||||
\li \l {Content Library}
|
||||
\li \b -
|
||||
\li \b -
|
||||
\li \b X
|
||||
\li The \uicontrol {Content Library} view is not a part of \QUL or \QMCU.
|
||||
\row
|
||||
\li \l {Texture Editor}
|
||||
\li \b -
|
||||
\li \b -
|
||||
\li \b X
|
||||
\li The \uicontrol {Texture Editor} view is not a part of \QUL or \QMCU.
|
||||
\endtable
|
||||
|
||||
*/
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
\table
|
||||
\row
|
||||
\li \image studio-animation.png
|
||||
\li \image qds-studio-animation.png
|
||||
\li You can use different animation techniques for different
|
||||
purposes. \QDS supports common motion design techniques,
|
||||
such as timeline and keyframe based animation and easing
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
\table
|
||||
\row
|
||||
\li \image studio-3d-scenes.png
|
||||
\li \image qds-studio-3d-scenes.png
|
||||
\li After your UI wireframe has been approved, you can turn it
|
||||
into an interactive prototype to ensure that you and the
|
||||
developers share a common vision about the UI appearance
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
\table
|
||||
\row
|
||||
\li \image front-ui.png
|
||||
\li \image qds-front-ui.png
|
||||
\li Plan your UI properly. Know what elements, such as screens,
|
||||
components, and states, you need. Create a descriptive wireframe
|
||||
and acquire a detailed UI specification before you start to make
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
\table
|
||||
\row
|
||||
\li \image front-advanced.png
|
||||
\li \image qds-front-advanced.png
|
||||
\li Learn more about the UI files (.ui.qml), collecting data about
|
||||
using \QDS, and about packaging applications for delivering
|
||||
them to users or uploading them to app stores.
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
\table
|
||||
\row
|
||||
\li \image front-projects.png
|
||||
\li \image qds-front-projects.png
|
||||
\li Learn more about using the Git version control system,
|
||||
converting UI projects into applications, and using
|
||||
external tools directly from \QDS.
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
\table
|
||||
\row
|
||||
\li \image front-gs.png
|
||||
\li \image qds-front-gs.png
|
||||
\li When you install \QDS, everything you need to start wireframing
|
||||
and prototyping UIs is installed and set up for you. You can
|
||||
move directly to learning about how to use the different \QDS
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
|
||||
/*!
|
||||
\page studio-help.html
|
||||
\previouspage studio-compatibility-with-mcu-sdks.html
|
||||
\previouspage studio-features-on-mcu-projects.html
|
||||
\nextpage creator-help.html
|
||||
|
||||
\title Help
|
||||
|
||||
\table
|
||||
\row
|
||||
\li \image front-help.png
|
||||
\li \image qds-front-help.png
|
||||
\li Learn more about using the \uicontrol Help mode, frequently
|
||||
asked questions, and supported platforms.
|
||||
\endtable
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
\table
|
||||
\row
|
||||
\li \image front-preview.png
|
||||
\li \image qds-front-preview.png
|
||||
\li \QDS attempts to meet your needs, whether you have previous
|
||||
experience with QML and coding or not. When you install \QDS,
|
||||
the default configuration allows you to start wireframing,
|
||||
|
||||
@@ -151,12 +151,11 @@
|
||||
|
||||
\image studio-design-mode.webp "Design mode"
|
||||
|
||||
Read more about modes:
|
||||
The mode selector is hidden by default.
|
||||
|
||||
\list
|
||||
\li \l{Selecting Modes}
|
||||
\li \l{Design Views}
|
||||
\endlist
|
||||
To show the mode selector, go to \uicontrol Views >
|
||||
\uicontrol {Mode Selector Style} and select \uicontrol {Icons and Text}
|
||||
or \uicontrol {Icons Only}.
|
||||
|
||||
\section1 Project
|
||||
\target glossary-project
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
\li \l{Tutorials}
|
||||
\li \l{User Interface}
|
||||
\list
|
||||
\li \l{Selecting Modes}
|
||||
\li \l{Design Views}
|
||||
\list
|
||||
\li \l{2D}
|
||||
@@ -203,7 +202,6 @@
|
||||
\list
|
||||
\li \l{Working in Edit Mode}
|
||||
\list
|
||||
\li \l{Working with Sidebars}
|
||||
\li \l{Browsing Project Contents}
|
||||
\li \l{Viewing Output}
|
||||
\endlist
|
||||
@@ -262,6 +260,7 @@
|
||||
\li \l{\QDS on MCUs}
|
||||
\list
|
||||
\li \l {\QDS Version Compatibility with \QMCU SDKs}
|
||||
\li \l {\QDS Features on MCU Projects}
|
||||
\endlist
|
||||
\endlist
|
||||
\li \l Help
|
||||
|
||||
@@ -13,10 +13,10 @@
|
||||
|
||||
\table
|
||||
\row
|
||||
\li \inlineimage front-ui.png
|
||||
\li \inlineimage qds-front-ui.png
|
||||
\li \inlineimage studio-flow.png
|
||||
\li \inlineimage studio-3d-scenes.png
|
||||
\li \inlineimage front-projects.png
|
||||
\li \inlineimage qds-studio-3d-scenes.png
|
||||
\li \inlineimage qds-front-projects.png
|
||||
\row
|
||||
\li \b {Creating UI wireframes}
|
||||
\li \b {Creating UI prototypes}
|
||||
|
||||
@@ -18,10 +18,10 @@
|
||||
|
||||
\table
|
||||
\row
|
||||
\li \inlineimage front-gs.png
|
||||
\li \inlineimage front-ui.png
|
||||
\li \inlineimage studio-3d-scenes.png
|
||||
\li \inlineimage studio-animation.png
|
||||
\li \inlineimage qds-front-gs.png
|
||||
\li \inlineimage qds-front-ui.png
|
||||
\li \inlineimage qds-studio-3d-scenes.png
|
||||
\li \inlineimage qds-studio-animation.png
|
||||
\row
|
||||
\li \b {\l{Getting Started}}
|
||||
\list
|
||||
@@ -58,10 +58,10 @@
|
||||
\li \l{Optimizing Designs}
|
||||
\endlist
|
||||
\row
|
||||
\li \inlineimage front-preview.png
|
||||
\li \inlineimage front-advanced.png
|
||||
\li \inlineimage front-projects.png
|
||||
\li \inlineimage front-help.png
|
||||
\li \inlineimage qds-front-preview.png
|
||||
\li \inlineimage qds-front-advanced.png
|
||||
\li \inlineimage qds-front-projects.png
|
||||
\li \inlineimage qds-front-help.png
|
||||
\row
|
||||
\li \b {\l{Implementing Applications}}
|
||||
\list
|
||||
|
||||
@@ -313,7 +313,7 @@
|
||||
\endlist
|
||||
|
||||
You can pause the particle animation by selecting
|
||||
\inlineimage icons/particle-animation-on.png
|
||||
\inlineimage icons/particle-pause.png
|
||||
. When the animation is paused, you can use
|
||||
\inlineimage icons/particles-seek.png
|
||||
to manually seek forward or backward in the particle animation.
|
||||
|
||||
@@ -209,11 +209,38 @@
|
||||
\uicontrol {Shadow map far} property value. Using smaller values
|
||||
may improve the precision and effects of the map.
|
||||
|
||||
\section1 Baking Lightmaps
|
||||
\section1 Baked Lightmaps
|
||||
|
||||
\note Lightmaps baking is released as technical preview in \QDS 4.1.
|
||||
|
||||
\section2 Baking Lightmaps for a 3D Model
|
||||
Baked lightmaps allow pre-generating the direct lighting from lights such as DirectionalLight,
|
||||
PointLight, and SpotLight, including the shadows cast by the lights. At run time, instead of
|
||||
performing the appropriate calculations in the fragment shader, and, in case of shadows,
|
||||
generating the potentially costly shadow maps in real time, the pre-generated light map is
|
||||
sampled instead.
|
||||
|
||||
\section2 Baking Lightmaps
|
||||
|
||||
To bake lightmaps for models in your 3D scene:
|
||||
|
||||
\list 1
|
||||
\li Right-click anywhere in the \uicontrol 3D view and select \uicontrol {Bake Lights}.
|
||||
\li In the \uicontrol {Lights Baking Setup} dialog:
|
||||
\list
|
||||
\li For every light you want to use to bake lightmaps, set \uicontrol {Bake Mode} to BakeModeAll.
|
||||
\li For every 3D model you want to bake lightmaps, select \uicontrol {In Use} and
|
||||
\uicontrol {Enabled}, and set the desired \uicontrol {Resolution}.
|
||||
\endlist
|
||||
\li Optional. If you have components with unexposed models or lights (for example, imported
|
||||
3D models created in other software), select \uicontrol {Expose models and lights} to add the
|
||||
models and light of that component to the \uicontrol Models and \uicontrol Lights sections of
|
||||
the dialog.
|
||||
\li Select \uicontrol Bake.
|
||||
\endlist
|
||||
|
||||
\image bake-lights-dialog.png
|
||||
|
||||
\section2 Manually Baking Lightmaps for a 3D Model
|
||||
Baked lightmap components are not visible in the \uicontrol Navigator view by default. To make
|
||||
them visible, select \inlineimage icons/visibilityon.png
|
||||
in the \uicontrol Navigator view.
|
||||
@@ -239,9 +266,10 @@
|
||||
\li In the \uicontrol Navigator view, select the light component that you want to bake
|
||||
lightmaps for, and in the \uicontrol Properties view, set \uicontrol {Bake Mode} to BakeModeAll.
|
||||
\li Right-click anywhere in the \uicontrol 3D view and select \uicontrol {Bake Lights}.
|
||||
\li Select \uicontrol {Setup baking manually}, and then select \uicontrol Bake.
|
||||
\endlist
|
||||
|
||||
\section2 Baking Lightmaps for a 3D Model Inside a Sub Component
|
||||
\section2 Manually Baking Lightmaps for a 3D Model Inside a Sub Component
|
||||
|
||||
To bake lightmaps for a 3D model inside a sub component, first add a local custom property to
|
||||
expose the model:
|
||||
@@ -299,6 +327,7 @@
|
||||
a unique name.
|
||||
\endlist
|
||||
\li Right-click anywhere in the \uicontrol 3D view and select \uicontrol {Bake Lights}.
|
||||
\li Select \uicontrol {Setup baking manually}, and then select \uicontrol Bake.
|
||||
\endlist
|
||||
|
||||
*/
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
/*!
|
||||
\page creator-using-qt-quick-designer.html
|
||||
|
||||
\previouspage creator-modes.html
|
||||
\previouspage creator-quick-tour.html
|
||||
\nextpage qtquick-form-editor.html
|
||||
|
||||
\title Design Views
|
||||
@@ -31,52 +31,65 @@
|
||||
|
||||
\section1 Summary of Design Views
|
||||
|
||||
In addition to the summary of design views, the table below includes an MCU
|
||||
column that indicates the views which are fully supported on MCU projects.
|
||||
For more information, see \l {\QDS Features on MCU Projects}.
|
||||
|
||||
\table
|
||||
\header
|
||||
\li View
|
||||
\li Purpose
|
||||
\li MCU
|
||||
\li Read More
|
||||
\row
|
||||
\li \l {2D}
|
||||
\li Provides a working area for designing 2D UIs.
|
||||
When you are editing 3D scenes, the \uicontrol {2D} view is
|
||||
used as a canvas for the 3D scene projected by the camera.
|
||||
\li \image ok.png
|
||||
\li \l {2D}
|
||||
\row
|
||||
\li \l {3D}
|
||||
\li Provides an editor for files you created using 3D graphics
|
||||
applications and stored in one of the supported formats.
|
||||
\li
|
||||
\li \l {3D}
|
||||
\row
|
||||
\li \l {Material Editor and Browser}
|
||||
\li In the \uicontrol {Material Editor} and
|
||||
\uicontrol {Material Browser} views, you create and manage materials and
|
||||
textures.
|
||||
\li
|
||||
\li \l {Material Editor and Browser}
|
||||
\row
|
||||
\li \l Components
|
||||
\li Contains preset components and your own components, that you can use
|
||||
to design you application.
|
||||
\li \image ok.png
|
||||
\li \l{Using Components}
|
||||
\row
|
||||
\li \l Assets
|
||||
\li Contains assets such as images and fonts that you can use in your
|
||||
application.
|
||||
\li \image ok.png
|
||||
\li \l Assets
|
||||
\row
|
||||
\li \l Navigator
|
||||
\li Displays the composition of the current component file as
|
||||
a tree structure. A component file can contain references
|
||||
to other components and assets.
|
||||
\li \image ok.png
|
||||
\li \l Navigator
|
||||
\row
|
||||
\li \l Properties
|
||||
\li Enables you to modify the properties of the selected component.
|
||||
\li \image ok.png
|
||||
\li \l {Specifying Component Properties}
|
||||
\row
|
||||
\li \l{Connections}
|
||||
\li Enables you to add functionality to the UI by creating
|
||||
connections between components, signals, and component properties.
|
||||
\li \image ok.png
|
||||
\li \l{Working with Connections}
|
||||
\row
|
||||
\li \l States
|
||||
@@ -84,54 +97,65 @@
|
||||
Typically, states describe UI configurations, such as the
|
||||
visibility and behavior of components and the available user
|
||||
actions.
|
||||
\li \image ok.png
|
||||
\li \l{Working with States}
|
||||
\row
|
||||
\li \l{Transitions}
|
||||
\li Enables you to make movement between states smooth by animating
|
||||
the changes between states.
|
||||
\li \image ok.png
|
||||
\li \l{Animating Transitions Between States}
|
||||
\row
|
||||
\li \l Translations
|
||||
\li Provides functionality to add multi-language support to your
|
||||
project.
|
||||
\li
|
||||
\li \l{Translations}
|
||||
\row
|
||||
\li \l Timeline
|
||||
\li Provides a timeline and keyframe based editor for animating
|
||||
the properties of components.
|
||||
\li \image ok.png
|
||||
\li \l{Creating Timeline Animations}
|
||||
\row
|
||||
\li \l{Curves}
|
||||
\li Enables you to view and modify the whole animation curve by
|
||||
inserting keyframes to the curve and dragging them and the point
|
||||
handlers to modify the curve.
|
||||
\li
|
||||
\li \l {Editing Animation Curves}
|
||||
\row
|
||||
\li \l{Code}
|
||||
\li Provides a code editor for viewing and modifying the code
|
||||
generated by the visual editors.
|
||||
\li \image ok.png
|
||||
\li \l {Working in Edit Mode}
|
||||
\row
|
||||
\li \l Projects
|
||||
\li Shows a list of open projects and the files they contain.
|
||||
\li \image ok.png
|
||||
\li \l Projects
|
||||
\row
|
||||
\li \l{File System}
|
||||
\li Shows all files in the currently selected directory.
|
||||
\li \image ok.png
|
||||
\li \l{File System}
|
||||
\row
|
||||
\li \l{Open Documents}
|
||||
\li Shows currently open files.
|
||||
\li \image ok.png
|
||||
\li \l{Open Documents}
|
||||
\row
|
||||
\li \l{Content Library}
|
||||
\li The \uicontrol {Content Library} view contains material, texture,
|
||||
and environment bundles with assets that you can use in your project.
|
||||
\li
|
||||
\li \l{Content Library}
|
||||
\row
|
||||
\li \l{Texture Editor}
|
||||
\li In the \uicontrol {Texture Editor} view, you create and manage
|
||||
textures.
|
||||
\li
|
||||
\li \l{Texture Editor}
|
||||
\endtable
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ Module {
|
||||
property bool hasRepo
|
||||
|
||||
configure: {
|
||||
repoDir = FileInfo.cleanPath(path + "/../../../tests/unit/unittest/3rdparty/googletest");
|
||||
repoDir = FileInfo.cleanPath(path + "/../../../tests/unit/3rdparty/googletest");
|
||||
gtestDir = FileInfo.joinPaths(repoDir, "googletest");
|
||||
gmockDir = FileInfo.joinPaths(repoDir, "googlemock");
|
||||
hasRepo = File.exists(gtestDir);
|
||||
|
||||
@@ -9,6 +9,8 @@ import AssetsLibraryBackend
|
||||
TreeViewDelegate {
|
||||
id: root
|
||||
|
||||
property StudioTheme.ControlStyle style: StudioTheme.Values.controlStyle
|
||||
|
||||
required property Item assetsView
|
||||
required property Item assetsRoot
|
||||
|
||||
@@ -68,6 +70,21 @@ TreeViewDelegate {
|
||||
root.depth = root.initialDepth
|
||||
}
|
||||
|
||||
indicator: Item {
|
||||
implicitWidth: 20
|
||||
implicitHeight: root.implicitHeight
|
||||
anchors.left: bg.left
|
||||
|
||||
Image {
|
||||
id: arrow
|
||||
width: 8
|
||||
height: 4
|
||||
source: "image://icons/down-arrow"
|
||||
anchors.centerIn: parent
|
||||
rotation: root.expanded ? 0 : -90
|
||||
}
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
id: bg
|
||||
|
||||
@@ -109,7 +126,7 @@ TreeViewDelegate {
|
||||
id: assetLabel
|
||||
text: assetLabel.__computeText()
|
||||
color: StudioTheme.Values.themeTextColor
|
||||
font.pixelSize: StudioTheme.Values.mediumFont
|
||||
font.pixelSize: StudioTheme.Values.baseFontSize
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
verticalAlignment: Qt.AlignVCenter
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 149 B |
@@ -19,6 +19,7 @@ Item {
|
||||
materialsView.closeContextMenu()
|
||||
texturesView.closeContextMenu()
|
||||
environmentsView.closeContextMenu()
|
||||
effectsView.closeContextMenu()
|
||||
HelperWidgets.Controller.closeContextMenu()
|
||||
}
|
||||
|
||||
@@ -67,6 +68,7 @@ Item {
|
||||
materialsView.expandVisibleSections()
|
||||
texturesView.expandVisibleSections()
|
||||
environmentsView.expandVisibleSections()
|
||||
effectsView.expandVisibleSections()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +78,8 @@ Item {
|
||||
height: StudioTheme.Values.toolbarHeight
|
||||
tabsModel: [{name: qsTr("Materials"), icon: StudioTheme.Constants.material_medium},
|
||||
{name: qsTr("Textures"), icon: StudioTheme.Constants.textures_medium},
|
||||
{name: qsTr("Environments"), icon: StudioTheme.Constants.languageList_medium}]
|
||||
{name: qsTr("Environments"), icon: StudioTheme.Constants.languageList_medium},
|
||||
{name: qsTr("Effects"), icon: StudioTheme.Constants.effects}]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -98,7 +101,8 @@ Item {
|
||||
searchBox: searchBox
|
||||
|
||||
onUnimport: (bundleMat) => {
|
||||
confirmUnimportDialog.targetBundleMaterial = bundleMat
|
||||
confirmUnimportDialog.targetBundleItem = bundleMat
|
||||
confirmUnimportDialog.targetBundleType = "material"
|
||||
confirmUnimportDialog.open()
|
||||
}
|
||||
}
|
||||
@@ -122,6 +126,20 @@ Item {
|
||||
|
||||
searchBox: searchBox
|
||||
}
|
||||
|
||||
ContentLibraryEffectsView {
|
||||
id: effectsView
|
||||
|
||||
width: root.width
|
||||
|
||||
searchBox: searchBox
|
||||
|
||||
onUnimport: (bundleItem) => {
|
||||
confirmUnimportDialog.targetBundleItem = bundleItem
|
||||
confirmUnimportDialog.targetBundleType = "effect"
|
||||
confirmUnimportDialog.open()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import QtQuickDesignerTheme
|
||||
import HelperWidgets
|
||||
import QtQuick.Controls
|
||||
|
||||
import StudioTheme as StudioTheme
|
||||
import ContentLibraryBackend
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
signal showContextMenu()
|
||||
|
||||
visible: modelData.bundleItemVisible
|
||||
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
|
||||
hoverEnabled: true
|
||||
anchors.fill: parent
|
||||
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
||||
|
||||
onPressed: (mouse) => {
|
||||
if (mouse.button === Qt.LeftButton && !ContentLibraryBackend.effectsModel.importerRunning)
|
||||
ContentLibraryBackend.rootView.startDragEffect(modelData, mapToGlobal(mouse.x, mouse.y))
|
||||
else if (mouse.button === Qt.RightButton)
|
||||
root.showContextMenu()
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
anchors.fill: parent
|
||||
spacing: 1
|
||||
|
||||
Item { width: 1; height: 5 } // spacer
|
||||
|
||||
Image {
|
||||
id: img
|
||||
|
||||
width: root.width - 10
|
||||
height: img.width
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
source: modelData.bundleItemIcon
|
||||
cache: false
|
||||
|
||||
Rectangle { // circular indicator for imported bundle effect
|
||||
width: 10
|
||||
height: 10
|
||||
radius: 5
|
||||
anchors.right: img.right
|
||||
anchors.top: img.top
|
||||
anchors.margins: 5
|
||||
color: "#00ff00"
|
||||
border.color: "#555555"
|
||||
border.width: 1
|
||||
visible: modelData.bundleItemImported
|
||||
|
||||
ToolTip {
|
||||
visible: indicatorMouseArea.containsMouse
|
||||
text: qsTr("Effect is imported to project")
|
||||
delay: 1000
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: indicatorMouseArea
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
text: modelData.bundleItemName
|
||||
|
||||
width: img.width
|
||||
clip: true
|
||||
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
horizontalAlignment: TextInput.AlignHCenter
|
||||
|
||||
font.pixelSize: StudioTheme.Values.myFontSize
|
||||
|
||||
color: StudioTheme.Values.themeTextColor
|
||||
}
|
||||
} // Column
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
import QtQuick
|
||||
import HelperWidgets
|
||||
import StudioControls as StudioControls
|
||||
import StudioTheme as StudioTheme
|
||||
import ContentLibraryBackend
|
||||
|
||||
StudioControls.Menu {
|
||||
id: root
|
||||
|
||||
property var targetItem: null
|
||||
|
||||
readonly property bool targetAvailable: targetItem && !ContentLibraryBackend.effectsModel.importerRunning
|
||||
|
||||
signal unimport(var bundleEff);
|
||||
|
||||
function popupMenu(targetItem = null)
|
||||
{
|
||||
this.targetItem = targetItem
|
||||
popup()
|
||||
}
|
||||
|
||||
closePolicy: StudioControls.Menu.CloseOnEscape | StudioControls.Menu.CloseOnPressOutside
|
||||
|
||||
StudioControls.MenuItem {
|
||||
text: qsTr("Add an instance")
|
||||
enabled: root.targetAvailable
|
||||
onTriggered: ContentLibraryBackend.effectsModel.addInstance(root.targetItem)
|
||||
}
|
||||
|
||||
StudioControls.MenuItem {
|
||||
enabled: root.targetAvailable && root.targetItem.bundleItemImported
|
||||
text: qsTr("Remove from project")
|
||||
|
||||
onTriggered: root.unimport(root.targetItem)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
// Copyright (C) 2023 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
import QtQuick
|
||||
import HelperWidgets as HelperWidgets
|
||||
import StudioControls as StudioControls
|
||||
import StudioTheme as StudioTheme
|
||||
import ContentLibraryBackend
|
||||
|
||||
HelperWidgets.ScrollView {
|
||||
id: root
|
||||
|
||||
clip: true
|
||||
interactive: !ctxMenu.opened && !ContentLibraryBackend.rootView.isDragging
|
||||
&& !HelperWidgets.Controller.contextMenuOpened
|
||||
|
||||
readonly property int cellWidth: 100
|
||||
readonly property int cellHeight: 120
|
||||
|
||||
required property var searchBox
|
||||
|
||||
signal unimport(var bundleItem);
|
||||
|
||||
function closeContextMenu()
|
||||
{
|
||||
ctxMenu.close()
|
||||
}
|
||||
|
||||
function expandVisibleSections()
|
||||
{
|
||||
for (let i = 0; i < categoryRepeater.count; ++i) {
|
||||
let cat = categoryRepeater.itemAt(i)
|
||||
if (cat.visible && !cat.expanded)
|
||||
cat.expandSection()
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
ContentLibraryEffectContextMenu {
|
||||
id: ctxMenu
|
||||
|
||||
onUnimport: (bundleEff) => root.unimport(bundleEff)
|
||||
}
|
||||
|
||||
Repeater {
|
||||
id: categoryRepeater
|
||||
|
||||
model: ContentLibraryBackend.effectsModel
|
||||
|
||||
delegate: HelperWidgets.Section {
|
||||
width: root.width
|
||||
caption: bundleCategoryName
|
||||
addTopPadding: false
|
||||
sectionBackgroundColor: "transparent"
|
||||
visible: bundleCategoryVisible && !ContentLibraryBackend.effectsModel.isEmpty
|
||||
expanded: bundleCategoryExpanded
|
||||
expandOnClick: false
|
||||
category: "ContentLib_Effect"
|
||||
|
||||
onToggleExpand: bundleCategoryExpanded = !bundleCategoryExpanded
|
||||
onExpand: bundleCategoryExpanded = true
|
||||
onCollapse: bundleCategoryExpanded = false
|
||||
|
||||
function expandSection() {
|
||||
bundleCategoryExpanded = true
|
||||
}
|
||||
|
||||
Grid {
|
||||
width: root.width
|
||||
leftPadding: 5
|
||||
rightPadding: 5
|
||||
bottomPadding: 5
|
||||
columns: root.width / root.cellWidth
|
||||
|
||||
Repeater {
|
||||
model: bundleCategoryItems
|
||||
|
||||
delegate: ContentLibraryEffect {
|
||||
width: root.cellWidth
|
||||
height: root.cellHeight
|
||||
|
||||
onShowContextMenu: ctxMenu.popupMenu(modelData)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
id: infoText
|
||||
text: {
|
||||
if (!ContentLibraryBackend.effectsModel.bundleExists)
|
||||
qsTr("No effects available.")
|
||||
else if (!ContentLibraryBackend.rootView.hasQuick3DImport)
|
||||
qsTr("To use <b>Content Library</b>, first add the QtQuick3D module in the <b>Components</b> view.")
|
||||
else if (!ContentLibraryBackend.effectsModel.hasRequiredQuick3DImport)
|
||||
qsTr("To use <b>Content Library</b>, version 6.4 or later of the QtQuick3D module is required.")
|
||||
else if (!ContentLibraryBackend.rootView.hasMaterialLibrary)
|
||||
qsTr("<b>Content Library</b> is disabled inside a non-visual component.")
|
||||
else if (!searchBox.isEmpty())
|
||||
qsTr("No match found.")
|
||||
else
|
||||
""
|
||||
}
|
||||
color: StudioTheme.Values.themeTextColor
|
||||
font.pixelSize: StudioTheme.Values.baseFontSize
|
||||
topPadding: 10
|
||||
leftPadding: 10
|
||||
visible: ContentLibraryBackend.effectsModel.isEmpty
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -95,7 +95,7 @@ Item {
|
||||
icon: StudioTheme.Constants.plus
|
||||
tooltip: qsTr("Add an instance to project")
|
||||
buttonSize: 22
|
||||
property color c: StudioTheme.Values.themeIconColor
|
||||
property color c: "white"
|
||||
normalColor: Qt.hsla(c.hslHue, c.hslSaturation, c.hslLightness, .2)
|
||||
hoverColor: Qt.hsla(c.hslHue, c.hslSaturation, c.hslLightness, .3)
|
||||
pressColor: Qt.hsla(c.hslHue, c.hslSaturation, c.hslLightness, .4)
|
||||
@@ -118,7 +118,7 @@ Item {
|
||||
|
||||
iconColor: root.downloadState === "unavailable" || root.downloadState === "failed"
|
||||
? StudioTheme.Values.themeRedLight
|
||||
: StudioTheme.Values.themeTextColor
|
||||
: "white"
|
||||
|
||||
iconSize: 22
|
||||
iconScale: downloadIcon.containsMouse ? 1.2 : 1
|
||||
|
||||
@@ -20,6 +20,8 @@ Item {
|
||||
property string downloadState: modelData.isDownloaded() ? "downloaded" : ""
|
||||
property bool delegateVisible: modelData.textureVisible
|
||||
|
||||
property bool _isUpdating: false
|
||||
|
||||
property alias allowCancel: progressBar.closeButtonVisible
|
||||
property alias progressValue: progressBar.value
|
||||
property alias progressText: progressLabel.text
|
||||
@@ -40,6 +42,55 @@ Item {
|
||||
return qsTr("Click to download the texture.")
|
||||
}
|
||||
|
||||
function startDownload(message)
|
||||
{
|
||||
if (root.downloadState !== "" && root.downloadState !== "failed")
|
||||
return
|
||||
|
||||
root._startDownload(textureDownloader, message)
|
||||
}
|
||||
|
||||
function updateTexture()
|
||||
{
|
||||
if (root.downloadState !== "downloaded")
|
||||
return
|
||||
|
||||
root._isUpdating = true
|
||||
root._startDownload(textureDownloader, qsTr("Updating..."))
|
||||
}
|
||||
|
||||
function _startDownload(downloader, message)
|
||||
{
|
||||
progressBar.visible = true
|
||||
tooltip.visible = false
|
||||
root.progressText = message
|
||||
root.allowCancel = true
|
||||
root.progressValue = Qt.binding(function() { return downloader.progress })
|
||||
|
||||
root.downloadState = ""
|
||||
downloader.start()
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
|
||||
anchors.fill: parent
|
||||
hoverEnabled: !downloadIcon.visible
|
||||
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
||||
|
||||
onEntered: tooltip.visible = image.visible
|
||||
onExited: tooltip.visible = false
|
||||
|
||||
onPressed: (mouse) => {
|
||||
if (mouse.button === Qt.LeftButton) {
|
||||
if (root.downloadState === "downloaded")
|
||||
ContentLibraryBackend.rootView.startDragTexture(modelData, mapToGlobal(mouse.x, mouse.y))
|
||||
} else if (mouse.button === Qt.RightButton && root.downloadState === "downloaded") {
|
||||
root.showContextMenu()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: downloadPane
|
||||
anchors.fill: parent
|
||||
@@ -60,7 +111,7 @@ Item {
|
||||
visible: false
|
||||
|
||||
onCancelRequested: {
|
||||
downloader.cancel()
|
||||
textureDownloader.cancel()
|
||||
}
|
||||
|
||||
Text {
|
||||
@@ -114,7 +165,7 @@ Item {
|
||||
|
||||
iconColor: root.downloadState === "unavailable" || root.downloadState === "failed"
|
||||
? StudioTheme.Values.themeRedLight
|
||||
: StudioTheme.Values.themeTextColor
|
||||
: "white"
|
||||
|
||||
iconSize: 22
|
||||
iconScale: downloadIcon.containsMouse ? 1.2 : 1
|
||||
@@ -144,20 +195,76 @@ Item {
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
if (root.downloadState !== "" && root.downloadState !== "failed")
|
||||
return
|
||||
|
||||
progressBar.visible = true
|
||||
tooltip.visible = false
|
||||
root.progressText = qsTr("Downloading...")
|
||||
root.allowCancel = true
|
||||
root.progressValue = Qt.binding(function() { return downloader.progress })
|
||||
|
||||
root.downloadState = ""
|
||||
downloader.start()
|
||||
root.startDownload(qsTr("Downloading..."))
|
||||
}
|
||||
} // IconButton
|
||||
|
||||
IconButton {
|
||||
id: updateButton
|
||||
icon: StudioTheme.Constants.updateAvailable_medium
|
||||
iconColor: "white"
|
||||
tooltip: qsTr("Update texture")
|
||||
buttonSize: 22
|
||||
iconSize: 22
|
||||
|
||||
iconScale: updateButton.containsMouse ? 1.2 : 1
|
||||
iconStyle: Text.Outline
|
||||
iconStyleColor: "black"
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.bottom: parent.bottom
|
||||
|
||||
visible: root.downloadState === "downloaded" && modelData.textureHasUpdate
|
||||
transparentBg: true
|
||||
|
||||
onClicked: root.updateTexture()
|
||||
|
||||
Text {
|
||||
text: StudioTheme.Constants.updateContent_medium
|
||||
font.family: StudioTheme.Constants.iconFont.family
|
||||
color: "black"
|
||||
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.bottomMargin: 5
|
||||
|
||||
font.pixelSize: 10
|
||||
font.bold: true
|
||||
|
||||
scale: updateButton.containsMouse ? 1.2 : 1
|
||||
}
|
||||
} // Update IconButton
|
||||
|
||||
Rectangle {
|
||||
id: isNewFlag
|
||||
|
||||
width: 32
|
||||
height: 32
|
||||
|
||||
visible: downloadIcon.visible && modelData.textureIsNew
|
||||
color: "transparent"
|
||||
|
||||
anchors.top: parent.top
|
||||
anchors.right: parent.right
|
||||
|
||||
Image {
|
||||
source: "image://contentlibrary/new_flag_triangle.png"
|
||||
width: 32
|
||||
height: 32
|
||||
}
|
||||
|
||||
Text {
|
||||
color: "white"
|
||||
font.family: StudioTheme.Constants.iconFont.family
|
||||
text: StudioTheme.Constants.favorite
|
||||
font.pixelSize: StudioTheme.Values.baseIconFontSize
|
||||
anchors.right: parent.right
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: 2
|
||||
anchors.rightMargin: 4
|
||||
} // New texture flag
|
||||
}
|
||||
|
||||
ToolTip {
|
||||
id: tooltip
|
||||
// contentWidth is not calculated correctly by the toolTip (resulting in a wider tooltip than
|
||||
@@ -177,29 +284,8 @@ Item {
|
||||
}
|
||||
} // Image
|
||||
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
|
||||
anchors.fill: parent
|
||||
hoverEnabled: !downloadIcon.visible
|
||||
propagateComposedEvents: downloadIcon.visible
|
||||
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
||||
|
||||
onEntered: tooltip.visible = image.visible
|
||||
onExited: tooltip.visible = false
|
||||
|
||||
onPressed: (mouse) => {
|
||||
if (mouse.button === Qt.LeftButton) {
|
||||
if (root.downloadState === "downloaded")
|
||||
ContentLibraryBackend.rootView.startDragTexture(modelData, mapToGlobal(mouse.x, mouse.y))
|
||||
} else if (mouse.button === Qt.RightButton && root.downloadState === "downloaded") {
|
||||
root.showContextMenu()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FileDownloader {
|
||||
id: downloader
|
||||
id: textureDownloader
|
||||
url: image.webUrl
|
||||
probeUrl: false
|
||||
downloadEnabled: true
|
||||
@@ -210,9 +296,9 @@ Item {
|
||||
onFinishedChanged: {
|
||||
root.progressText = qsTr("Extracting...")
|
||||
root.allowCancel = false
|
||||
root.progressValue = Qt.binding(function() { return extractor.progress })
|
||||
root.progressValue = Qt.binding(function() { return textureExtractor.progress })
|
||||
|
||||
extractor.extract()
|
||||
textureExtractor.extract()
|
||||
}
|
||||
|
||||
onDownloadCanceled: {
|
||||
@@ -238,14 +324,50 @@ Item {
|
||||
}
|
||||
|
||||
FileExtractor {
|
||||
id: extractor
|
||||
archiveName: downloader.completeBaseName
|
||||
sourceFile: downloader.outputFile
|
||||
id: textureExtractor
|
||||
archiveName: textureDownloader.completeBaseName
|
||||
sourceFile: textureDownloader.outputFile
|
||||
targetPath: modelData.textureParentPath
|
||||
alwaysCreateDir: false
|
||||
clearTargetPathContents: false
|
||||
onFinishedChanged: {
|
||||
if (root._isUpdating)
|
||||
root._startDownload(iconDownloader, qsTr("Updating..."))
|
||||
else
|
||||
delayedFinish.restart()
|
||||
}
|
||||
}
|
||||
|
||||
FileDownloader {
|
||||
id: iconDownloader
|
||||
url: modelData.textureWebIconUrl
|
||||
probeUrl: false
|
||||
downloadEnabled: true
|
||||
targetFilePath: modelData.textureIconPath
|
||||
overwriteTarget: true
|
||||
|
||||
onDownloadStarting: {
|
||||
root.downloadState = "downloading"
|
||||
}
|
||||
|
||||
onFinishedChanged: {
|
||||
image.source = ""
|
||||
image.source = modelData.textureIcon
|
||||
|
||||
ContentLibraryBackend.rootView.markTextureUpdated(modelData.textureKey)
|
||||
|
||||
delayedFinish.restart()
|
||||
}
|
||||
|
||||
onDownloadCanceled: {
|
||||
root.progressText = ""
|
||||
root.progressValue = 0
|
||||
|
||||
root.downloadState = ""
|
||||
}
|
||||
|
||||
onDownloadFailed: {
|
||||
root.downloadState = "failed"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import StudioControls as StudioControls
|
||||
import StudioTheme as StudioTheme
|
||||
import ContentLibraryBackend
|
||||
|
||||
Dialog {
|
||||
StudioControls.Dialog {
|
||||
id: root
|
||||
|
||||
title: qsTr("Bundle material might be in use")
|
||||
@@ -19,7 +19,8 @@ Dialog {
|
||||
implicitWidth: 300
|
||||
modal: true
|
||||
|
||||
property var targetBundleMaterial
|
||||
property var targetBundleType // "effect" or "material"
|
||||
property var targetBundleItem
|
||||
|
||||
contentItem: Column {
|
||||
spacing: 20
|
||||
@@ -28,7 +29,8 @@ Dialog {
|
||||
Text {
|
||||
id: folderNotEmpty
|
||||
|
||||
text: qsTr("If the material you are removing is in use, it might cause the project to malfunction.\n\nAre you sure you want to remove the material?")
|
||||
text: qsTr("If the %1 you are removing is in use, it might cause the project to malfunction.\n\nAre you sure you want to remove the %1?")
|
||||
.arg(root.targetBundleType)
|
||||
color: StudioTheme.Values.themeTextColor
|
||||
wrapMode: Text.WordWrap
|
||||
anchors.right: parent.right
|
||||
@@ -48,7 +50,11 @@ Dialog {
|
||||
text: qsTr("Remove")
|
||||
|
||||
onClicked: {
|
||||
ContentLibraryBackend.materialsModel.removeFromProject(root.targetBundleMaterial)
|
||||
if (root.targetBundleType === "material")
|
||||
ContentLibraryBackend.materialsModel.removeFromProject(root.targetBundleItem)
|
||||
else if (root.targetBundleType === "effect")
|
||||
ContentLibraryBackend.effectsModel.removeFromProject(root.targetBundleItem)
|
||||
|
||||
root.accept()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,11 +63,14 @@ Rectangle {
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
TextEdit {
|
||||
id: progressText
|
||||
width: scrollView.width
|
||||
font.pixelSize: StudioTheme.Values.myFontSize
|
||||
color: StudioTheme.Values.themeTextColor
|
||||
readOnly: true
|
||||
selectByMouse: true
|
||||
selectByKeyboard: true
|
||||
}
|
||||
|
||||
function ensureVisible()
|
||||
|
||||
@@ -12,6 +12,8 @@ import StudioTheme as StudioTheme
|
||||
Rectangle {
|
||||
id: root
|
||||
|
||||
property int toolTipDelay: 1000
|
||||
|
||||
color: StudioTheme.Values.themePanelBackground
|
||||
|
||||
Column {
|
||||
@@ -99,6 +101,7 @@ Rectangle {
|
||||
hoverEnabled: true
|
||||
ToolTip.visible: hovered
|
||||
ToolTip.text: qsTr("The baking mode applied to this light.")
|
||||
ToolTip.delay: root.toolTipDelay
|
||||
|
||||
onActivated: bakeMode = currentValue
|
||||
}
|
||||
@@ -112,6 +115,7 @@ Rectangle {
|
||||
hoverEnabled: true
|
||||
ToolTip.visible: hovered
|
||||
ToolTip.text: qsTr("If checked, this model contributes to baked lighting,\nfor example in form of casting shadows or indirect light.")
|
||||
ToolTip.delay: root.toolTipDelay
|
||||
|
||||
onToggled: inUse = checked
|
||||
}
|
||||
@@ -125,6 +129,7 @@ Rectangle {
|
||||
hoverEnabled: true
|
||||
ToolTip.visible: hovered
|
||||
ToolTip.text: qsTr("If checked, baked lightmap texture is generated and rendered for this model.")
|
||||
ToolTip.delay: root.toolTipDelay
|
||||
|
||||
onToggled: isEnabled = checked
|
||||
}
|
||||
@@ -155,6 +160,7 @@ Rectangle {
|
||||
hoverEnabled: true
|
||||
ToolTip.visible: hovered
|
||||
ToolTip.text: qsTr("Generated lightmap resolution for this model.")
|
||||
ToolTip.delay: root.toolTipDelay
|
||||
|
||||
onRealValueChanged: resolution = realValue
|
||||
}
|
||||
@@ -176,6 +182,7 @@ Rectangle {
|
||||
hoverEnabled: true
|
||||
ToolTip.visible: hovered
|
||||
ToolTip.text: qsTr("If checked, baking settings above are not applied on close or bake.\nInstead, user is expected to set baking properties manually.")
|
||||
ToolTip.delay: root.toolTipDelay
|
||||
|
||||
onToggled: rootView.manualMode = checked
|
||||
}
|
||||
|
||||
@@ -24,6 +24,11 @@ Rectangle {
|
||||
matName.commitRename()
|
||||
}
|
||||
|
||||
function startRename()
|
||||
{
|
||||
matName.startRename()
|
||||
}
|
||||
|
||||
border.width: MaterialBrowserBackend.materialBrowserModel.selectedIndex === index ? MaterialBrowserBackend.rootView.materialSectionFocused ? 3 : 1 : 0
|
||||
border.color: MaterialBrowserBackend.materialBrowserModel.selectedIndex === index
|
||||
? StudioTheme.Values.themeControlOutlineInteraction
|
||||
|
||||
@@ -24,7 +24,9 @@ Item {
|
||||
property real __actionIndicatorWidth: StudioTheme.Values.squareComponentWidth
|
||||
property real __actionIndicatorHeight: StudioTheme.Values.height
|
||||
property string typeFilter: "QtQuick3D.Material"
|
||||
property string textRole: "idAndName"
|
||||
// This binding is a workaround to overcome the rather long adaption to new Qt versions. This
|
||||
// should actually be fixed in the ModelSection.qml by setting the textRole: "idAndName".
|
||||
property string textRole: (root.typeFilter === "QtQuick3D.Material") ? "idAndName" : "id"
|
||||
property string valueRole: "id"
|
||||
property int activatedReason: ComboBox.ActivatedReason.Other
|
||||
|
||||
@@ -42,60 +44,78 @@ Item {
|
||||
Layout.preferredWidth: StudioTheme.Values.height * 10
|
||||
Layout.preferredHeight: myColumn.height
|
||||
|
||||
HelperWidgets.ListValidator {
|
||||
id: listValidator
|
||||
filterList: itemFilterModel.validationItems
|
||||
}
|
||||
|
||||
HelperWidgets.ItemFilterModel {
|
||||
id: itemFilterModel
|
||||
typeFilter: root.typeFilter
|
||||
modelNodeBackendProperty: modelNodeBackend
|
||||
selectedItems: root.allowDuplicates ? [] : root.model
|
||||
validationRoles: [root.textRole, root.valueRole]
|
||||
}
|
||||
|
||||
Component {
|
||||
id: myDelegate
|
||||
|
||||
Row {
|
||||
property alias comboBox: itemFilterComboBox
|
||||
property alias comboBox: delegateComboBox
|
||||
|
||||
ListViewComboBox {
|
||||
id: itemFilterComboBox
|
||||
id: delegateComboBox
|
||||
|
||||
property int myIndex: index
|
||||
property bool empty: itemFilterComboBox.initialModelData === ""
|
||||
|
||||
validator: RegExpValidator { regExp: /(^[a-z_]\w*|^[A-Z]\w*\.{1}([a-z_]\w*\.?)+)/ }
|
||||
property bool empty: delegateComboBox.initialModelData === ""
|
||||
|
||||
validator: listValidator
|
||||
actionIndicatorVisible: false
|
||||
model: itemFilterModel
|
||||
initialModelData: modelData
|
||||
textRole: root.textRole
|
||||
valueRole: root.valueRole
|
||||
implicitWidth: StudioTheme.Values.singleControlColumnWidth
|
||||
width: implicitWidth
|
||||
width: delegateComboBox.implicitWidth
|
||||
textElidable: true
|
||||
|
||||
onFocusChanged: {
|
||||
if (itemFilterComboBox.focus)
|
||||
if (delegateComboBox.focus) {
|
||||
myColumn.currentIndex = index
|
||||
} else {
|
||||
if (!delegateComboBox.dirty)
|
||||
return
|
||||
|
||||
var curValue = itemFilterComboBox.availableValue()
|
||||
if (itemFilterComboBox.empty && curValue !== "") {
|
||||
// If focus is lost check if text was changed and try to search for it in
|
||||
// the text as well as in the value role.
|
||||
let idx = delegateComboBox.indexOfString(delegateComboBox.editText)
|
||||
if (idx === -1) {
|
||||
delegateComboBox.editText = delegateComboBox.preFocusText
|
||||
} else {
|
||||
delegateComboBox.currentIndex = idx
|
||||
if (delegateComboBox.empty && delegateComboBox.currentValue !== "") {
|
||||
myRepeater.dirty = false
|
||||
root.add(curValue)
|
||||
root.add(delegateComboBox.currentValue)
|
||||
} else {
|
||||
root.replace(delegateComboBox.myIndex, delegateComboBox.currentValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onCompressedActivated: function(index, reason) {
|
||||
root.activatedReason = reason
|
||||
|
||||
var curValue = itemFilterComboBox.availableValue()
|
||||
if (itemFilterComboBox.empty && curValue) {
|
||||
var curValue = delegateComboBox.availableValue()
|
||||
if (delegateComboBox.empty && curValue) {
|
||||
myRepeater.dirty = false
|
||||
root.add(curValue)
|
||||
} else {
|
||||
root.replace(itemFilterComboBox.myIndex, curValue)
|
||||
root.replace(delegateComboBox.myIndex, curValue)
|
||||
}
|
||||
}
|
||||
|
||||
onHoverChanged: root.delegateHover = itemFilterComboBox.hover
|
||||
onHoverChanged: root.delegateHover = delegateComboBox.hover
|
||||
}
|
||||
|
||||
Spacer { implicitWidth: extraButton.visible ? 5 : StudioTheme.Values.twoControlColumnGap }
|
||||
@@ -114,15 +134,17 @@ Item {
|
||||
icon: StudioTheme.Constants.closeCross
|
||||
onClicked: {
|
||||
var lastItem = index === myRepeater.localModel.length - 1
|
||||
if (myColumn.currentItem.initialModelData === "") {
|
||||
var tmp = myRepeater.itemAt(index)
|
||||
|
||||
myColumn.currentIndex = index - 1
|
||||
|
||||
if (tmp.comboBox.initialModelData === "") {
|
||||
myRepeater.localModel.pop()
|
||||
myRepeater.dirty = false
|
||||
myRepeater.model = myRepeater.localModel // trigger on change handler
|
||||
} else {
|
||||
root.remove(index)
|
||||
}
|
||||
if (!lastItem)
|
||||
myColumn.currentIndex = index - 1
|
||||
}
|
||||
onHoveredChanged: root.delegateHover = closeIndicator.hovered
|
||||
}
|
||||
@@ -152,6 +174,11 @@ Item {
|
||||
myColumn.currentItem = tmp.comboBox
|
||||
}
|
||||
|
||||
onCurrentItemChanged: {
|
||||
if (myColumn.currentItem !== null)
|
||||
myColumn.currentItem.forceActiveFocus()
|
||||
}
|
||||
|
||||
Repeater {
|
||||
id: myRepeater
|
||||
|
||||
@@ -162,7 +189,7 @@ Item {
|
||||
|
||||
onItemAdded: function(index, item) {
|
||||
if (index === myColumn.currentIndex)
|
||||
myColumn.currentItem = item
|
||||
myColumn.currentItem = item.comboBox
|
||||
}
|
||||
|
||||
function updateModel() {
|
||||
@@ -180,9 +207,7 @@ Item {
|
||||
|
||||
myRepeater.model = myRepeater.localModel // trigger on change handler
|
||||
|
||||
if (lastIndex < 0 && myRepeater.localModel.length > 0)
|
||||
myColumn.currentIndex = 0
|
||||
else if (myRepeater.localModel.length > lastIndex)
|
||||
if (myRepeater.localModel.length > lastIndex)
|
||||
myColumn.currentIndex = lastIndex
|
||||
else
|
||||
myColumn.currentIndex = myRepeater.localModel.length - 1
|
||||
@@ -196,28 +221,41 @@ Item {
|
||||
ListViewComboBox {
|
||||
id: dummyComboBox
|
||||
visible: myRepeater.count === 0
|
||||
validator: RegExpValidator { regExp: /(^[a-z_]\w*|^[A-Z]\w*\.{1}([a-z_]\w*\.?)+)/ }
|
||||
validator: listValidator
|
||||
actionIndicatorVisible: false
|
||||
model: itemFilterModel
|
||||
textRole: root.textRole
|
||||
valueRole: root.valueRole
|
||||
implicitWidth: StudioTheme.Values.singleControlColumnWidth
|
||||
width: implicitWidth
|
||||
width: dummyComboBox.implicitWidth
|
||||
|
||||
onVisibleChanged: dummyComboBox.currentIndex = -1
|
||||
|
||||
onFocusChanged: {
|
||||
var curValue = dummyComboBox.availableValue()
|
||||
if (curValue !== "")
|
||||
root.add(curValue)
|
||||
if (dummyComboBox.focus)
|
||||
return
|
||||
|
||||
if (!dummyComboBox.dirty)
|
||||
return
|
||||
|
||||
// If focus is lost check if text was changed and try to search for it in
|
||||
// the text as well as in the value role.
|
||||
let idx = dummyComboBox.indexOfString(dummyComboBox.editText)
|
||||
if (idx === -1) {
|
||||
dummyComboBox.editText = dummyComboBox.preFocusText
|
||||
} else {
|
||||
dummyComboBox.currentIndex = idx
|
||||
if (dummyComboBox.currentValue !== "")
|
||||
root.add(dummyComboBox.currentValue)
|
||||
}
|
||||
}
|
||||
|
||||
onCompressedActivated: {
|
||||
onCompressedActivated: function(index, reason) {
|
||||
root.activatedReason = reason
|
||||
|
||||
var curValue = dummyComboBox.availableValue()
|
||||
if (curValue !== "")
|
||||
root.add(curValue)
|
||||
else
|
||||
root.replace(dummyComboBox.myIndex, curValue)
|
||||
}
|
||||
|
||||
onHoverChanged: root.delegateHover = dummyComboBox.hover
|
||||
|
||||
@@ -40,7 +40,7 @@ StudioControls.TextField {
|
||||
function escapeString(string) {
|
||||
var str = string
|
||||
str = str.replace(/\\/g, "\\\\")
|
||||
str.replace(/\"/g, "\\\"")
|
||||
str = str.replace(/\"/g, "\\\"")
|
||||
str = str.replace(/\t/g, "\\t")
|
||||
str = str.replace(/\r/g, "\\r")
|
||||
str = str.replace(/\n/g, '\\n')
|
||||
|
||||
@@ -51,4 +51,21 @@ StudioControls.ComboBox {
|
||||
|
||||
return root.editText
|
||||
}
|
||||
|
||||
// Checks if the given parameter can be found as a value or text (valueRole vs. textRole). If
|
||||
// both searches result an index !== -1 the text is preferred, otherwise index will be returned
|
||||
// or -1 if not found.
|
||||
// Text is preferred due to the fact that usually the users use the autocomplete functionality
|
||||
// of an editable ComboBox hence there will be more hits on text search then on value.
|
||||
function indexOfString(text) {
|
||||
let textIndex = root.find(text)
|
||||
if (textIndex !== -1)
|
||||
return textIndex
|
||||
|
||||
let valueIndex = root.indexOfValue(text)
|
||||
if (valueIndex !== -1)
|
||||
return valueIndex
|
||||
|
||||
return -1
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,11 @@ Row {
|
||||
root.backendValue.setEnumeration("Item", value)
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: modelNodeBackend
|
||||
function onSelectionChanged() { originPopup.close() }
|
||||
}
|
||||
|
||||
ExtendedFunctionLogic {
|
||||
id: extFuncLogic
|
||||
backendValue: root.backendValue
|
||||
|
||||
@@ -34,6 +34,8 @@ T.ComboBox {
|
||||
|
||||
property int maximumPopupHeight: control.style.maxComboBoxPopupHeight
|
||||
|
||||
property string preFocusText: ""
|
||||
|
||||
signal compressedActivated(int index, int reason)
|
||||
|
||||
enum ActivatedReason { EditingFinished, Other }
|
||||
@@ -53,7 +55,7 @@ T.ComboBox {
|
||||
|
||||
onActiveFocusChanged: {
|
||||
if (control.activeFocus)
|
||||
comboBoxInput.preFocusText = control.editText
|
||||
control.preFocusText = control.editText
|
||||
}
|
||||
|
||||
ActionIndicator {
|
||||
@@ -69,8 +71,6 @@ T.ComboBox {
|
||||
contentItem: ComboBoxInput {
|
||||
id: comboBoxInput
|
||||
|
||||
property string preFocusText: ""
|
||||
|
||||
style: control.style
|
||||
__parentControl: control
|
||||
text: control.editText
|
||||
@@ -332,8 +332,8 @@ T.ComboBox {
|
||||
|
||||
Keys.onPressed: function(event) {
|
||||
if (event.key === Qt.Key_Escape) {
|
||||
control.editText = comboBoxInput.preFocusText
|
||||
control.dirty = true
|
||||
control.editText = control.preFocusText
|
||||
control.dirty = false
|
||||
control.focus = false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -133,209 +133,212 @@ QtObject {
|
||||
readonly property string editLightOn_medium: "\u0096"
|
||||
readonly property string edit_medium: "\u0097"
|
||||
readonly property string edit_small: "\u0098"
|
||||
readonly property string events_small: "\u0099"
|
||||
readonly property string export_medium: "\u009A"
|
||||
readonly property string eyeDropper: "\u009B"
|
||||
readonly property string favorite: "\u009D"
|
||||
readonly property string fitAll_medium: "\u009E"
|
||||
readonly property string fitSelected_small: "\u009F"
|
||||
readonly property string fitSelection_medium: "\u00A0"
|
||||
readonly property string fitToView_medium: "\u00A1"
|
||||
readonly property string flowAction: "\u00A2"
|
||||
readonly property string flowTransition: "\u00A3"
|
||||
readonly property string fontStyleBold: "\u00A4"
|
||||
readonly property string fontStyleItalic: "\u00A5"
|
||||
readonly property string fontStyleStrikethrough: "\u00A6"
|
||||
readonly property string fontStyleUnderline: "\u00A7"
|
||||
readonly property string forward_medium: "\u00A8"
|
||||
readonly property string globalOrient_medium: "\u00A9"
|
||||
readonly property string gradient: "\u00AA"
|
||||
readonly property string gridView: "\u00AB"
|
||||
readonly property string grid_medium: "\u00AC"
|
||||
readonly property string group_small: "\u00AE"
|
||||
readonly property string home_large: "\u00AF"
|
||||
readonly property string idAliasOff: "\u00B0"
|
||||
readonly property string idAliasOn: "\u00B1"
|
||||
readonly property string import_medium: "\u00B2"
|
||||
readonly property string imported: "\u00B3"
|
||||
readonly property string importedModels_small: "\u00B4"
|
||||
readonly property string infinity: "\u00B5"
|
||||
readonly property string invisible_medium: "\u00B6"
|
||||
readonly property string keyframe: "\u00B7"
|
||||
readonly property string languageList_medium: "\u00B8"
|
||||
readonly property string layouts_small: "\u00B9"
|
||||
readonly property string lights_small: "\u00BA"
|
||||
readonly property string linear_medium: "\u00BB"
|
||||
readonly property string linkTriangle: "\u00BC"
|
||||
readonly property string linked: "\u00BD"
|
||||
readonly property string listView: "\u00BE"
|
||||
readonly property string list_medium: "\u00BF"
|
||||
readonly property string localOrient_medium: "\u00C0"
|
||||
readonly property string lockOff: "\u00C1"
|
||||
readonly property string lockOn: "\u00C2"
|
||||
readonly property string loopPlayback_medium: "\u00C3"
|
||||
readonly property string materialBrowser_medium: "\u00C4"
|
||||
readonly property string materialPreviewEnvironment: "\u00C5"
|
||||
readonly property string materialPreviewModel: "\u00C6"
|
||||
readonly property string material_medium: "\u00C7"
|
||||
readonly property string mergeCells: "\u00C8"
|
||||
readonly property string merge_small: "\u00C9"
|
||||
readonly property string minus: "\u00CA"
|
||||
readonly property string mirror: "\u00CB"
|
||||
readonly property string more_medium: "\u00CC"
|
||||
readonly property string mouseArea_small: "\u00CD"
|
||||
readonly property string moveDown_medium: "\u00CE"
|
||||
readonly property string moveInwards_medium: "\u00CF"
|
||||
readonly property string moveUp_medium: "\u00D0"
|
||||
readonly property string moveUpwards_medium: "\u00D1"
|
||||
readonly property string move_medium: "\u00D2"
|
||||
readonly property string newMaterial: "\u00D3"
|
||||
readonly property string nextFile_large: "\u00D4"
|
||||
readonly property string openLink: "\u00D5"
|
||||
readonly property string openMaterialBrowser: "\u00D6"
|
||||
readonly property string orientation: "\u00D7"
|
||||
readonly property string orthCam_medium: "\u00D8"
|
||||
readonly property string orthCam_small: "\u00D9"
|
||||
readonly property string paddingEdge: "\u00DA"
|
||||
readonly property string paddingFrame: "\u00DB"
|
||||
readonly property string particleAnimation_medium: "\u00DC"
|
||||
readonly property string pasteStyle: "\u00DD"
|
||||
readonly property string paste_small: "\u00DE"
|
||||
readonly property string pause: "\u00DF"
|
||||
readonly property string perspectiveCam_medium: "\u00E0"
|
||||
readonly property string perspectiveCam_small: "\u00E1"
|
||||
readonly property string pin: "\u00E2"
|
||||
readonly property string plane_medium: "\u00E3"
|
||||
readonly property string plane_small: "\u00E4"
|
||||
readonly property string play: "\u00E5"
|
||||
readonly property string playFill_medium: "\u00E6"
|
||||
readonly property string playOutline_medium: "\u00E7"
|
||||
readonly property string plus: "\u00E8"
|
||||
readonly property string pointLight_small: "\u00E9"
|
||||
readonly property string positioners_small: "\u00EA"
|
||||
readonly property string previewEnv_medium: "\u00EB"
|
||||
readonly property string previousFile_large: "\u00EC"
|
||||
readonly property string promote: "\u00ED"
|
||||
readonly property string properties_medium: "\u00EE"
|
||||
readonly property string readOnly: "\u00EF"
|
||||
readonly property string recordFill_medium: "\u00F0"
|
||||
readonly property string recordOutline_medium: "\u00F1"
|
||||
readonly property string redo: "\u00F2"
|
||||
readonly property string reload_medium: "\u00F3"
|
||||
readonly property string remove_medium: "\u00F4"
|
||||
readonly property string remove_small: "\u00F5"
|
||||
readonly property string rename_small: "\u00F6"
|
||||
readonly property string replace_small: "\u00F7"
|
||||
readonly property string resetView_small: "\u00F8"
|
||||
readonly property string restartParticles_medium: "\u00F9"
|
||||
readonly property string reverseOrder_medium: "\u00FA"
|
||||
readonly property string roatate_medium: "\u00FB"
|
||||
readonly property string rotationFill: "\u00FC"
|
||||
readonly property string rotationOutline: "\u00FD"
|
||||
readonly property string runProjFill_large: "\u00FE"
|
||||
readonly property string runProjOutline_large: "\u00FF"
|
||||
readonly property string s_anchors: "\u0100"
|
||||
readonly property string s_annotations: "\u0101"
|
||||
readonly property string s_arrange: "\u0102"
|
||||
readonly property string s_boundingBox: "\u0103"
|
||||
readonly property string s_component: "\u0104"
|
||||
readonly property string s_connections: "\u0105"
|
||||
readonly property string s_edit: "\u0106"
|
||||
readonly property string s_enterComponent: "\u0107"
|
||||
readonly property string s_eventList: "\u0108"
|
||||
readonly property string s_group: "\u0109"
|
||||
readonly property string s_layouts: "\u010A"
|
||||
readonly property string s_merging: "\u010B"
|
||||
readonly property string s_mouseArea: "\u010C"
|
||||
readonly property string s_positioners: "\u010D"
|
||||
readonly property string s_selection: "\u010E"
|
||||
readonly property string s_snapping: "\u010F"
|
||||
readonly property string s_timeline: "\u0110"
|
||||
readonly property string s_visibility: "\u0111"
|
||||
readonly property string saveLogs_medium: "\u0112"
|
||||
readonly property string scale_medium: "\u0113"
|
||||
readonly property string search: "\u0114"
|
||||
readonly property string search_small: "\u0115"
|
||||
readonly property string sectionToggle: "\u0116"
|
||||
readonly property string selectFill_medium: "\u0117"
|
||||
readonly property string selectOutline_medium: "\u0118"
|
||||
readonly property string selectParent_small: "\u0119"
|
||||
readonly property string selection_small: "\u011A"
|
||||
readonly property string settings_medium: "\u011B"
|
||||
readonly property string signal_small: "\u011C"
|
||||
readonly property string snapping_small: "\u011D"
|
||||
readonly property string sphere_medium: "\u011E"
|
||||
readonly property string sphere_small: "\u011F"
|
||||
readonly property string splitColumns: "\u0120"
|
||||
readonly property string splitRows: "\u0121"
|
||||
readonly property string spotLight_small: "\u0122"
|
||||
readonly property string stackedContainer_small: "\u0123"
|
||||
readonly property string startNode: "\u0124"
|
||||
readonly property string step_medium: "\u0125"
|
||||
readonly property string stop_medium: "\u0126"
|
||||
readonly property string testIcon: "\u0127"
|
||||
readonly property string textAlignBottom: "\u0128"
|
||||
readonly property string textAlignCenter: "\u0129"
|
||||
readonly property string textAlignJustified: "\u012A"
|
||||
readonly property string textAlignLeft: "\u012B"
|
||||
readonly property string textAlignMiddle: "\u012C"
|
||||
readonly property string textAlignRight: "\u012D"
|
||||
readonly property string textAlignTop: "\u012E"
|
||||
readonly property string textBulletList: "\u012F"
|
||||
readonly property string textFullJustification: "\u0130"
|
||||
readonly property string textNumberedList: "\u0131"
|
||||
readonly property string textures_medium: "\u0132"
|
||||
readonly property string tickIcon: "\u0133"
|
||||
readonly property string tickMark_small: "\u0134"
|
||||
readonly property string timeline_small: "\u0135"
|
||||
readonly property string toEndFrame_medium: "\u0136"
|
||||
readonly property string toNextFrame_medium: "\u0137"
|
||||
readonly property string toPrevFrame_medium: "\u0138"
|
||||
readonly property string toStartFrame_medium: "\u0139"
|
||||
readonly property string topToolbar_annotations: "\u013A"
|
||||
readonly property string topToolbar_closeFile: "\u013B"
|
||||
readonly property string topToolbar_designMode: "\u013C"
|
||||
readonly property string topToolbar_enterComponent: "\u013D"
|
||||
readonly property string topToolbar_home: "\u013E"
|
||||
readonly property string topToolbar_makeComponent: "\u013F"
|
||||
readonly property string topToolbar_navFile: "\u0140"
|
||||
readonly property string topToolbar_runProject: "\u0141"
|
||||
readonly property string translationCreateFiles: "\u0142"
|
||||
readonly property string translationCreateReport: "\u0143"
|
||||
readonly property string translationExport: "\u0144"
|
||||
readonly property string translationImport: "\u0145"
|
||||
readonly property string translationSelectLanguages: "\u0146"
|
||||
readonly property string translationTest: "\u0147"
|
||||
readonly property string transparent: "\u0148"
|
||||
readonly property string triState: "\u0149"
|
||||
readonly property string triangleArcA: "\u014A"
|
||||
readonly property string triangleArcB: "\u014B"
|
||||
readonly property string triangleCornerA: "\u014C"
|
||||
readonly property string triangleCornerB: "\u014D"
|
||||
readonly property string unLinked: "\u014E"
|
||||
readonly property string undo: "\u014F"
|
||||
readonly property string unify_medium: "\u0150"
|
||||
readonly property string unpin: "\u0151"
|
||||
readonly property string upDownIcon: "\u0152"
|
||||
readonly property string upDownSquare2: "\u0153"
|
||||
readonly property string visibilityOff: "\u0154"
|
||||
readonly property string visibilityOn: "\u0155"
|
||||
readonly property string visible_medium: "\u0156"
|
||||
readonly property string visible_small: "\u0157"
|
||||
readonly property string wildcard: "\u0158"
|
||||
readonly property string wizardsAutomotive: "\u0159"
|
||||
readonly property string wizardsDesktop: "\u015A"
|
||||
readonly property string wizardsGeneric: "\u015B"
|
||||
readonly property string wizardsMcuEmpty: "\u015C"
|
||||
readonly property string wizardsMcuGraph: "\u015D"
|
||||
readonly property string wizardsMobile: "\u015E"
|
||||
readonly property string wizardsUnknown: "\u015F"
|
||||
readonly property string zoomAll: "\u0160"
|
||||
readonly property string zoomIn: "\u0161"
|
||||
readonly property string zoomIn_medium: "\u0162"
|
||||
readonly property string zoomOut: "\u0163"
|
||||
readonly property string zoomOut_medium: "\u0164"
|
||||
readonly property string zoomSelection: "\u0165"
|
||||
readonly property string effects: "\u0099"
|
||||
readonly property string events_small: "\u009A"
|
||||
readonly property string export_medium: "\u009B"
|
||||
readonly property string eyeDropper: "\u009D"
|
||||
readonly property string favorite: "\u009E"
|
||||
readonly property string fitAll_medium: "\u009F"
|
||||
readonly property string fitSelected_small: "\u00A0"
|
||||
readonly property string fitSelection_medium: "\u00A1"
|
||||
readonly property string fitToView_medium: "\u00A2"
|
||||
readonly property string flowAction: "\u00A3"
|
||||
readonly property string flowTransition: "\u00A4"
|
||||
readonly property string fontStyleBold: "\u00A5"
|
||||
readonly property string fontStyleItalic: "\u00A6"
|
||||
readonly property string fontStyleStrikethrough: "\u00A7"
|
||||
readonly property string fontStyleUnderline: "\u00A8"
|
||||
readonly property string forward_medium: "\u00A9"
|
||||
readonly property string globalOrient_medium: "\u00AA"
|
||||
readonly property string gradient: "\u00AB"
|
||||
readonly property string gridView: "\u00AC"
|
||||
readonly property string grid_medium: "\u00AE"
|
||||
readonly property string group_small: "\u00AF"
|
||||
readonly property string home_large: "\u00B0"
|
||||
readonly property string idAliasOff: "\u00B1"
|
||||
readonly property string idAliasOn: "\u00B2"
|
||||
readonly property string import_medium: "\u00B3"
|
||||
readonly property string imported: "\u00B4"
|
||||
readonly property string importedModels_small: "\u00B5"
|
||||
readonly property string infinity: "\u00B6"
|
||||
readonly property string invisible_medium: "\u00B7"
|
||||
readonly property string keyframe: "\u00B8"
|
||||
readonly property string languageList_medium: "\u00B9"
|
||||
readonly property string layouts_small: "\u00BA"
|
||||
readonly property string lights_small: "\u00BB"
|
||||
readonly property string linear_medium: "\u00BC"
|
||||
readonly property string linkTriangle: "\u00BD"
|
||||
readonly property string linked: "\u00BE"
|
||||
readonly property string listView: "\u00BF"
|
||||
readonly property string list_medium: "\u00C0"
|
||||
readonly property string localOrient_medium: "\u00C1"
|
||||
readonly property string lockOff: "\u00C2"
|
||||
readonly property string lockOn: "\u00C3"
|
||||
readonly property string loopPlayback_medium: "\u00C4"
|
||||
readonly property string materialBrowser_medium: "\u00C5"
|
||||
readonly property string materialPreviewEnvironment: "\u00C6"
|
||||
readonly property string materialPreviewModel: "\u00C7"
|
||||
readonly property string material_medium: "\u00C8"
|
||||
readonly property string mergeCells: "\u00C9"
|
||||
readonly property string merge_small: "\u00CA"
|
||||
readonly property string minus: "\u00CB"
|
||||
readonly property string mirror: "\u00CC"
|
||||
readonly property string more_medium: "\u00CD"
|
||||
readonly property string mouseArea_small: "\u00CE"
|
||||
readonly property string moveDown_medium: "\u00CF"
|
||||
readonly property string moveInwards_medium: "\u00D0"
|
||||
readonly property string moveUp_medium: "\u00D1"
|
||||
readonly property string moveUpwards_medium: "\u00D2"
|
||||
readonly property string move_medium: "\u00D3"
|
||||
readonly property string newMaterial: "\u00D4"
|
||||
readonly property string nextFile_large: "\u00D5"
|
||||
readonly property string openLink: "\u00D6"
|
||||
readonly property string openMaterialBrowser: "\u00D7"
|
||||
readonly property string orientation: "\u00D8"
|
||||
readonly property string orthCam_medium: "\u00D9"
|
||||
readonly property string orthCam_small: "\u00DA"
|
||||
readonly property string paddingEdge: "\u00DB"
|
||||
readonly property string paddingFrame: "\u00DC"
|
||||
readonly property string particleAnimation_medium: "\u00DD"
|
||||
readonly property string pasteStyle: "\u00DE"
|
||||
readonly property string paste_small: "\u00DF"
|
||||
readonly property string pause: "\u00E0"
|
||||
readonly property string perspectiveCam_medium: "\u00E1"
|
||||
readonly property string perspectiveCam_small: "\u00E2"
|
||||
readonly property string pin: "\u00E3"
|
||||
readonly property string plane_medium: "\u00E4"
|
||||
readonly property string plane_small: "\u00E5"
|
||||
readonly property string play: "\u00E6"
|
||||
readonly property string playFill_medium: "\u00E7"
|
||||
readonly property string playOutline_medium: "\u00E8"
|
||||
readonly property string plus: "\u00E9"
|
||||
readonly property string pointLight_small: "\u00EA"
|
||||
readonly property string positioners_small: "\u00EB"
|
||||
readonly property string previewEnv_medium: "\u00EC"
|
||||
readonly property string previousFile_large: "\u00ED"
|
||||
readonly property string promote: "\u00EE"
|
||||
readonly property string properties_medium: "\u00EF"
|
||||
readonly property string readOnly: "\u00F0"
|
||||
readonly property string recordFill_medium: "\u00F1"
|
||||
readonly property string recordOutline_medium: "\u00F2"
|
||||
readonly property string redo: "\u00F3"
|
||||
readonly property string reload_medium: "\u00F4"
|
||||
readonly property string remove_medium: "\u00F5"
|
||||
readonly property string remove_small: "\u00F6"
|
||||
readonly property string rename_small: "\u00F7"
|
||||
readonly property string replace_small: "\u00F8"
|
||||
readonly property string resetView_small: "\u00F9"
|
||||
readonly property string restartParticles_medium: "\u00FA"
|
||||
readonly property string reverseOrder_medium: "\u00FB"
|
||||
readonly property string roatate_medium: "\u00FC"
|
||||
readonly property string rotationFill: "\u00FD"
|
||||
readonly property string rotationOutline: "\u00FE"
|
||||
readonly property string runProjFill_large: "\u00FF"
|
||||
readonly property string runProjOutline_large: "\u0100"
|
||||
readonly property string s_anchors: "\u0101"
|
||||
readonly property string s_annotations: "\u0102"
|
||||
readonly property string s_arrange: "\u0103"
|
||||
readonly property string s_boundingBox: "\u0104"
|
||||
readonly property string s_component: "\u0105"
|
||||
readonly property string s_connections: "\u0106"
|
||||
readonly property string s_edit: "\u0107"
|
||||
readonly property string s_enterComponent: "\u0108"
|
||||
readonly property string s_eventList: "\u0109"
|
||||
readonly property string s_group: "\u010A"
|
||||
readonly property string s_layouts: "\u010B"
|
||||
readonly property string s_merging: "\u010C"
|
||||
readonly property string s_mouseArea: "\u010D"
|
||||
readonly property string s_positioners: "\u010E"
|
||||
readonly property string s_selection: "\u010F"
|
||||
readonly property string s_snapping: "\u0110"
|
||||
readonly property string s_timeline: "\u0111"
|
||||
readonly property string s_visibility: "\u0112"
|
||||
readonly property string saveLogs_medium: "\u0113"
|
||||
readonly property string scale_medium: "\u0114"
|
||||
readonly property string search: "\u0115"
|
||||
readonly property string search_small: "\u0116"
|
||||
readonly property string sectionToggle: "\u0117"
|
||||
readonly property string selectFill_medium: "\u0118"
|
||||
readonly property string selectOutline_medium: "\u0119"
|
||||
readonly property string selectParent_small: "\u011A"
|
||||
readonly property string selection_small: "\u011B"
|
||||
readonly property string settings_medium: "\u011C"
|
||||
readonly property string signal_small: "\u011D"
|
||||
readonly property string snapping_small: "\u011E"
|
||||
readonly property string sphere_medium: "\u011F"
|
||||
readonly property string sphere_small: "\u0120"
|
||||
readonly property string splitColumns: "\u0121"
|
||||
readonly property string splitRows: "\u0122"
|
||||
readonly property string spotLight_small: "\u0123"
|
||||
readonly property string stackedContainer_small: "\u0124"
|
||||
readonly property string startNode: "\u0125"
|
||||
readonly property string step_medium: "\u0126"
|
||||
readonly property string stop_medium: "\u0127"
|
||||
readonly property string testIcon: "\u0128"
|
||||
readonly property string textAlignBottom: "\u0129"
|
||||
readonly property string textAlignCenter: "\u012A"
|
||||
readonly property string textAlignJustified: "\u012B"
|
||||
readonly property string textAlignLeft: "\u012C"
|
||||
readonly property string textAlignMiddle: "\u012D"
|
||||
readonly property string textAlignRight: "\u012E"
|
||||
readonly property string textAlignTop: "\u012F"
|
||||
readonly property string textBulletList: "\u0130"
|
||||
readonly property string textFullJustification: "\u0131"
|
||||
readonly property string textNumberedList: "\u0132"
|
||||
readonly property string textures_medium: "\u0133"
|
||||
readonly property string tickIcon: "\u0134"
|
||||
readonly property string tickMark_small: "\u0135"
|
||||
readonly property string timeline_small: "\u0136"
|
||||
readonly property string toEndFrame_medium: "\u0137"
|
||||
readonly property string toNextFrame_medium: "\u0138"
|
||||
readonly property string toPrevFrame_medium: "\u0139"
|
||||
readonly property string toStartFrame_medium: "\u013A"
|
||||
readonly property string topToolbar_annotations: "\u013B"
|
||||
readonly property string topToolbar_closeFile: "\u013C"
|
||||
readonly property string topToolbar_designMode: "\u013D"
|
||||
readonly property string topToolbar_enterComponent: "\u013E"
|
||||
readonly property string topToolbar_home: "\u013F"
|
||||
readonly property string topToolbar_makeComponent: "\u0140"
|
||||
readonly property string topToolbar_navFile: "\u0141"
|
||||
readonly property string topToolbar_runProject: "\u0142"
|
||||
readonly property string translationCreateFiles: "\u0143"
|
||||
readonly property string translationCreateReport: "\u0144"
|
||||
readonly property string translationExport: "\u0145"
|
||||
readonly property string translationImport: "\u0146"
|
||||
readonly property string translationSelectLanguages: "\u0147"
|
||||
readonly property string translationTest: "\u0148"
|
||||
readonly property string transparent: "\u0149"
|
||||
readonly property string triState: "\u014A"
|
||||
readonly property string triangleArcA: "\u014B"
|
||||
readonly property string triangleArcB: "\u014C"
|
||||
readonly property string triangleCornerA: "\u014D"
|
||||
readonly property string triangleCornerB: "\u014E"
|
||||
readonly property string unLinked: "\u014F"
|
||||
readonly property string undo: "\u0150"
|
||||
readonly property string unify_medium: "\u0151"
|
||||
readonly property string unpin: "\u0152"
|
||||
readonly property string upDownIcon: "\u0153"
|
||||
readonly property string upDownSquare2: "\u0154"
|
||||
readonly property string updateAvailable_medium: "\u0155"
|
||||
readonly property string updateContent_medium: "\u0156"
|
||||
readonly property string visibilityOff: "\u0157"
|
||||
readonly property string visibilityOn: "\u0158"
|
||||
readonly property string visible_medium: "\u0159"
|
||||
readonly property string visible_small: "\u015A"
|
||||
readonly property string wildcard: "\u015B"
|
||||
readonly property string wizardsAutomotive: "\u015C"
|
||||
readonly property string wizardsDesktop: "\u015D"
|
||||
readonly property string wizardsGeneric: "\u015E"
|
||||
readonly property string wizardsMcuEmpty: "\u015F"
|
||||
readonly property string wizardsMcuGraph: "\u0160"
|
||||
readonly property string wizardsMobile: "\u0161"
|
||||
readonly property string wizardsUnknown: "\u0162"
|
||||
readonly property string zoomAll: "\u0163"
|
||||
readonly property string zoomIn: "\u0164"
|
||||
readonly property string zoomIn_medium: "\u0165"
|
||||
readonly property string zoomOut: "\u0166"
|
||||
readonly property string zoomOut_medium: "\u0167"
|
||||
readonly property string zoomSelection: "\u0168"
|
||||
|
||||
readonly property font iconFont: Qt.font({
|
||||
"family": controlIcons.name,
|
||||
|
||||