forked from qt-creator/qt-creator
Merge "Merge remote-tracking branch 'origin/4.15'"
This commit is contained in:
54
dist/changes-4.14.2.md
vendored
Normal file
54
dist/changes-4.14.2.md
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
Qt Creator 4.14.2
|
||||
=================
|
||||
|
||||
Qt Creator version 4.14.2 contains bug fixes.
|
||||
|
||||
The most important changes are listed in this document. For a complete
|
||||
list of changes, see the Git log for the Qt Creator sources that
|
||||
you can check out from the public Git repository. For example:
|
||||
|
||||
git clone git://code.qt.io/qt-creator/qt-creator.git
|
||||
git log --cherry-pick --pretty=oneline origin/v4.14.1..v4.14.2
|
||||
|
||||
General
|
||||
-------
|
||||
|
||||
### Building Qt Creator with CMake
|
||||
|
||||
* Fixed installation location of desktop and appstream files
|
||||
|
||||
Help
|
||||
----
|
||||
|
||||
* Fixed crash with `Previous/Next Open Document in History` (QDS-3743)
|
||||
|
||||
Editing
|
||||
-------
|
||||
|
||||
* Re-added generic highlighting for Autoconf files (QTCREATORBUG-25391)
|
||||
|
||||
Debugging
|
||||
---------
|
||||
|
||||
### LLDB
|
||||
|
||||
* Fixed performance issue (QTCREATORBUG-25185, QTCREATORBUG-25217)
|
||||
|
||||
Platforms
|
||||
---------
|
||||
|
||||
### macOS
|
||||
|
||||
* Fixed vanishing controls in Welcome mode in Dark Mode (QTCREATORBUG-25405)
|
||||
|
||||
Credits for these changes go to:
|
||||
--------------------------------
|
||||
Alessandro Portale
|
||||
Christian Stenger
|
||||
Christophe Giboudeaux
|
||||
David Schulz
|
||||
Eike Ziller
|
||||
Heiko Becker
|
||||
Ivan Komissarov
|
||||
Miikka Heikkinen
|
||||
Robert Löhning
|
Binary file not shown.
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 16 KiB |
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Creator documentation.
|
||||
@@ -30,11 +30,11 @@
|
||||
|
||||
\title Creating a Qt Quick Application
|
||||
|
||||
This tutorial uses built-in QML types and illustrates basic concepts of
|
||||
This tutorial uses preset components and illustrates basic concepts of
|
||||
\l{Qt Quick}.
|
||||
For more information about the UI choices you have, see \l{User Interfaces}.
|
||||
|
||||
This tutorial describes how to use \QC to implement Qt Quick states and
|
||||
This tutorial describes how to use \QC to implement states and
|
||||
transitions. We create an application that displays a Qt logo that moves
|
||||
between three rectangles on the page when you click them.
|
||||
|
||||
@@ -47,13 +47,13 @@
|
||||
|
||||
\include qtquick-tutorial-create-empty-project.qdocinc qtquick empty application
|
||||
|
||||
\QC generates a QML file, \e main.qml, and opens it in
|
||||
\uicontrol {Text Editor}. The wizard template uses the \l Window type,
|
||||
\QC generates a component file, \e main.qml, and opens it in
|
||||
\uicontrol {Text Editor}. The wizard template uses the \l Window component,
|
||||
which does not support adding states. Because we want to use states in
|
||||
this example, we first replace the Window type with a \l {basic-rectangle}
|
||||
{Rectangle} type. We must also remove the line that sets the \c title
|
||||
property, which the Rectangle type does not have. If you change the value of
|
||||
the \uicontrol Type property in the \uicontrol Properties view, \QC offers
|
||||
this example, we first replace the Window component with a \l {basic-rectangle}
|
||||
{Rectangle} component. We must also remove the line that sets the \c title
|
||||
property, which the Rectangle component does not have. If you change the value of
|
||||
the \uicontrol component property in the \l Properties view, \QC offers
|
||||
to automatically remove the \c title property.
|
||||
|
||||
\section1 Creating the Main View
|
||||
@@ -62,20 +62,19 @@
|
||||
the top left corner of the view and two empty rectangles.
|
||||
|
||||
We use the \e qt-logo.png image in this tutorial, but you can also use
|
||||
any other image or a QML type, instead.
|
||||
any other image or a component, instead.
|
||||
|
||||
\note If a view is hidden, you can show it by selecting \uicontrol View >
|
||||
\uicontrol Views.
|
||||
|
||||
\list 1
|
||||
|
||||
\li Select \uicontrol Rectangle in \uicontrol Navigator, and enter
|
||||
\e page in the \uicontrol Id field in the \uicontrol Properties
|
||||
view.
|
||||
\li Select \uicontrol Rectangle in \l Navigator, and enter
|
||||
\e page in the \uicontrol Id field in \uicontrol Properties.
|
||||
|
||||
\li Select \uicontrol Library > \uicontrol Assets >
|
||||
\uicontrol {Add New Assets} to locate qt-logo.png (or your own
|
||||
image) and add it to the project folder.
|
||||
\li Select \l Library > \uicontrol Assets > \inlineimage plus.png
|
||||
to locate qt-logo.png (or your own image) and add it to the
|
||||
project folder.
|
||||
|
||||
\li Drag and drop the image from \uicontrol Assets to \e page in
|
||||
\uicontrol Navigator.
|
||||
@@ -93,9 +92,10 @@
|
||||
|
||||
\endlist
|
||||
|
||||
\li In \uicontrol Library > \uicontrol {QML Types} >
|
||||
\uicontrol {Qt Quick - Basic}, select \uicontrol Rectangle and
|
||||
drag and drop it to \e page in \uicontrol Navigator.
|
||||
\li In \uicontrol Library > \uicontrol Components >
|
||||
\uicontrol {Default Components} > \uicontrol Basic, select
|
||||
\uicontrol Rectangle and drag and drop it to \e page in
|
||||
\uicontrol Navigator.
|
||||
|
||||
\image qmldesigner-tutorial-topleftrect.png "Rectangle properties"
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
|
||||
\endlist
|
||||
|
||||
\li Drag and drop a \uicontrol {Mouse Area} type from the
|
||||
\li Drag and drop a \uicontrol {Mouse Area} component from the
|
||||
\uicontrol Library to \e topLeftRect in \uicontrol Navigator.
|
||||
|
||||
\li Click \uicontrol {Layout}, and then click the
|
||||
@@ -142,7 +142,7 @@
|
||||
\li In the \uicontrol Navigator, copy topLeftRect (by pressing
|
||||
\key {Ctrl+C}) and paste it to \e page in \uicontrol Navigator
|
||||
twice (by pressing \key {Ctrl+V}). \QC renames the new instances
|
||||
of the type topLeftRect1 and topLeftRect2.
|
||||
of the component topLeftRect1 and topLeftRect2.
|
||||
|
||||
\li Select topLeftRect1 and edit its properties:
|
||||
|
||||
@@ -194,9 +194,9 @@
|
||||
For more information about the views you used, see:
|
||||
|
||||
\list
|
||||
\li \l{Creating Components}
|
||||
\li \l{Navigator}
|
||||
\li \l{Specifying Component Properties}
|
||||
\li \l Library
|
||||
\li \l Navigator
|
||||
\li \l Properties
|
||||
\endlist
|
||||
|
||||
Next, we will make the image move between the rectangles when users click
|
||||
@@ -247,7 +247,7 @@
|
||||
For more information about the views you used, see:
|
||||
|
||||
\list
|
||||
\li \l{Adding States}
|
||||
\li \l States
|
||||
\li \l{Connecting Components to Signals}
|
||||
\endlist
|
||||
|
||||
@@ -305,7 +305,7 @@
|
||||
|
||||
\list
|
||||
\li \l{Editing Easing Curves}
|
||||
\li \l{Animating Transitions Between States}
|
||||
\li \l{Transition Editor}
|
||||
\endlist
|
||||
|
||||
Click the rectangles to view the animated transitions.
|
||||
|
@@ -52,15 +52,15 @@
|
||||
target platforms.
|
||||
|
||||
\li \uicontrol {Qt Quick Application - Scroll} uses the
|
||||
\l{ScrollView} type to implement a scrollable list view
|
||||
\l{ScrollView} component to implement a scrollable list view
|
||||
(requires Qt 5.9 or later).
|
||||
|
||||
\li \uicontrol {Qt Quick Application - Stack} uses the
|
||||
\l{StackView} type to implement a set of pages with a stack-based
|
||||
\l{StackView} component to implement a set of pages with a stack-based
|
||||
navigation model (requires Qt 5.7 or later).
|
||||
|
||||
\li \uicontrol {Qt Quick Application - Swipe} uses the
|
||||
\l{SwipeView} type to implement a set of pages with a swipe-based
|
||||
\l{SwipeView} component to implement a set of pages with a swipe-based
|
||||
navigation model (requires Qt 5.7 or later).
|
||||
|
||||
\endlist
|
||||
@@ -179,7 +179,7 @@
|
||||
\e main.qml, that you can modify in the \uicontrol {Form Editor}
|
||||
or the \uicontrol {Text Editor}.
|
||||
|
||||
For the Stack and Swipe applications, \QC generates two UI files,
|
||||
For the Stack and Swipe applications, \QC generates two \l{UI Files}{UI files},
|
||||
\e Page1Form.ui.qml and \e Page2Form.ui.qml, that you can modify in the
|
||||
\uicontrol {Form Editor} and a QML file, \e main.qml, that you can
|
||||
modify in the \uicontrol {Text Editor} to add the application logic.
|
||||
@@ -269,7 +269,7 @@
|
||||
files in the project folder belong to the project. Therefore, you do
|
||||
not need to individually list all the files in the project.
|
||||
|
||||
\li .qml file defines an UI item, such as a component or the
|
||||
\li .qml file defines a UI item, such as a component or the
|
||||
whole application UI.
|
||||
|
||||
\li ui.qml file defines a form for the application UI. This file is
|
||||
|
@@ -30,13 +30,13 @@
|
||||
|
||||
\title User Interaction Methods
|
||||
|
||||
You can use a set of basic QML types to add interaction methods to UIs,
|
||||
You can use a set of basic components to add interaction methods to UIs,
|
||||
such as performing actions by using a pointing device or the keyboard,
|
||||
or flicking the visible area of the screen horizontally or vertically.
|
||||
Further, you can use \l{Qt Quick Controls} types to inform users about
|
||||
Further, you can use \l{Qt Quick Controls} components to inform users about
|
||||
the progress of the application or to gather input from users.
|
||||
|
||||
\image qtquick-designer-qtquickcontrols-types.png "Qt Quick Controls 2 types in Library"
|
||||
\image qtquick-designer-qtquickcontrols-types.png "Qt Quick Controls components in Library"
|
||||
|
||||
The following types of controls are available for user interaction:
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
\endlist
|
||||
|
||||
You can specify values for the properties of components in the
|
||||
\uicontrol Properties view. Some properties are common to all components,
|
||||
\l Properties view. Some properties are common to all components,
|
||||
whereas some are common to particular types of controls. Some properties
|
||||
are only available for a particular component. The following sections
|
||||
describe the basic interaction methods, the controls, and their properties.
|
||||
@@ -63,10 +63,10 @@
|
||||
|
||||
\section2 Mouse Area
|
||||
|
||||
QML uses signals and handlers to deliver mouse interactions. Specifically,
|
||||
Qt Quick provides a \uicontrol {Mouse Area} type that developers can use to
|
||||
define JavaScript callbacks (also called signal handlers), which accept
|
||||
mouse events within a defined area.
|
||||
Signals and handlers are used to deliver mouse interactions. Specifically,
|
||||
you can use a \uicontrol {Mouse Area} component to define JavaScript
|
||||
callbacks (also called signal handlers), which accept mouse events within
|
||||
a defined area.
|
||||
|
||||
A mouse area receives events within a defined area. One quick way to define
|
||||
this area is to \l{Setting Anchors and Margins}{anchor} the mouse area to
|
||||
@@ -102,38 +102,38 @@
|
||||
to the focused component. If no component has active focus, the key event
|
||||
is ignored. If the component with active focus accepts the key event,
|
||||
propagation stops. Otherwise the event is sent to the component's parent
|
||||
until the event is accepted, or the root item is reached and the event is
|
||||
ignored.
|
||||
until the event is accepted, or the root component is reached and the event
|
||||
is ignored.
|
||||
|
||||
A component has focus when the \uicontrol Focus property in the
|
||||
\uicontrol Advanced tab is set to \c true. However, for reusable
|
||||
or imported components, this is not sufficient, and you should use
|
||||
a \uicontrol {Focus Scope} type.
|
||||
a \uicontrol {Focus Scope} component.
|
||||
|
||||
Within each focus scope, one object may have focus enabled. If more
|
||||
than one component have it enabled, the last component to enable it
|
||||
will have the focus and the others are unset, similarly to when there
|
||||
are no focus scopes.
|
||||
|
||||
When a focus scope receives active focus, the contained type with
|
||||
focus set (if any) also gets the active focus. If this type is
|
||||
also a focus scope, both the focus scope and the sub-focused item
|
||||
When a focus scope receives active focus, the contained component with
|
||||
focus set (if any) also gets the active focus. If this component is
|
||||
also a focus scope, both the focus scope and the sub-focused component
|
||||
will have active focus.
|
||||
|
||||
The \uicontrol {Focus Scope} type is not a visual type, and therefore the
|
||||
properties of its children need to be exposed to the parent item of the
|
||||
focus scope. \l{Using Layouts}{Layouts} and \l{Using Positioners}
|
||||
{positioners} will use these visual and styling properties to create the
|
||||
layout.
|
||||
The \uicontrol {Focus Scope} component is not a visual component and
|
||||
therefore the properties of its children need to be exposed to the parent
|
||||
component of the focus scope. \l{Using Layouts}{Layouts} and
|
||||
\l{Using Positioners}{positioners} will use these visual and styling
|
||||
properties to create the layout.
|
||||
|
||||
For more information, see \l {Keyboard Focus in Qt Quick}.
|
||||
|
||||
\section2 Flickable
|
||||
|
||||
\uicontrol Flickable places its children on a surface that can be dragged
|
||||
and flicked, causing the view onto the child items to scroll. This
|
||||
and flicked, causing the view onto the child components to scroll. This
|
||||
behavior forms the basis of components that are designed to show large
|
||||
numbers of child items, such as \uicontrol {List View} and
|
||||
numbers of child components, such as \uicontrol {List View} and
|
||||
\uicontrol {Grid View}. For more information, see \l{List and Grid Views}.
|
||||
|
||||
In traditional user interfaces, views can be scrolled using standard
|
||||
@@ -144,14 +144,14 @@
|
||||
scrolling continues after the user has stopped touching the view.
|
||||
|
||||
The contents of a flickable component are not automatically clipped. If
|
||||
the component is not used as a full-screen item, consider selecting the
|
||||
the component is not used as a full-screen component, consider selecting the
|
||||
\uicontrol Clip check box in the \uicontrol Visibility section.
|
||||
|
||||
\image qtquick-designer-flickable-properties.png "Flickable properties"
|
||||
|
||||
Users can interact with a flickable component if the \uicontrol Interactive
|
||||
property is set to \c true. Set it to \c false to temporarily disable
|
||||
flicking. This enables special interaction with the components children.
|
||||
flicking. This enables special interaction with the component's children.
|
||||
For example, you might want to freeze a flickable map while scrolling
|
||||
through a pop-up that is a child of the Flickable.
|
||||
|
||||
@@ -202,20 +202,20 @@
|
||||
|
||||
The \uicontrol {Content size} field specifies the dimensions of the
|
||||
surface controlled by a flickable. Typically, set the values of the
|
||||
\uicontrol W and \uicontrol H fields to the combined size of the items
|
||||
\uicontrol W and \uicontrol H fields to the combined size of the components
|
||||
placed in the flickable. You can set additional margins around the
|
||||
content in the \uicontrol Margins field.
|
||||
|
||||
The \uicontrol Origin field specifies the origin of the content. It
|
||||
refers to the top-left position of the content regardless of layout
|
||||
direction. Usually, the \uicontrol X and \uicontrol Y are set to 0.
|
||||
direction. Usually, the \uicontrol X and \uicontrol Y values are set to 0.
|
||||
However, a \l{ListView}{List View} and \l {GridView}{Grid View}
|
||||
may have an arbitrary origin due to delegate size variation, or item
|
||||
may have an arbitrary origin due to delegate size variation, or component
|
||||
insertion or removal outside the visible region.
|
||||
|
||||
\section1 General Control Properties
|
||||
|
||||
You can set control properties in the \uicontrol Properties view.
|
||||
You can set control properties in the \l Properties view.
|
||||
|
||||
\image qtquick-designer-control-properties.png "Control section in Properties"
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
components, unless it has been explicitly set for them.
|
||||
|
||||
\note Take care when enabling wheel events for controls within scrollable
|
||||
items, such as \l Flickable, because the control will consume the
|
||||
components, such as \l Flickable, because the control will consume the
|
||||
events, and therefore interrupt scrolling of the flickable.
|
||||
|
||||
\uicontrol Spacing is useful for controls that have multiple or repetitive
|
||||
@@ -296,7 +296,7 @@
|
||||
\if defined(qtdesignstudio)
|
||||
To create a button that contains an icon, use the wizard template to
|
||||
\l{Creating Custom Controls}{create a custom button} and drag-and-drop
|
||||
the icon to the button background item. For an example of using the
|
||||
the icon to the button background component. For an example of using the
|
||||
wizard template, see \l{Creating a Push Button}.
|
||||
\endif
|
||||
|
||||
@@ -323,7 +323,7 @@
|
||||
|
||||
\image qtquickcontrols2-checkdelegate.gif "Check delegate"
|
||||
|
||||
Use check boxes to build multi-selection option lists, where any number
|
||||
Use check boxes to build multi-selection option lists where any number
|
||||
of options can be selected, including none, but the options are not
|
||||
mutually exclusive.
|
||||
|
||||
@@ -346,11 +346,11 @@
|
||||
When options can be grouped, you can use a partially checked check box to
|
||||
represent the whole group. Select \uicontrol PartiallyChecked in the
|
||||
\uicontrol {Check state} field to indicate that users selected some
|
||||
sub-items in the group, but not all of them.
|
||||
sub-components in the group but not all of them.
|
||||
|
||||
The checkable options are often listed vertically.
|
||||
|
||||
The check box label should be a statement that the check mark makes true,
|
||||
The check box label should be a statement that the check mark makes true
|
||||
and that the absence of a check mark makes false. Therefore, the check box
|
||||
label should not contain a negative statement.
|
||||
|
||||
@@ -421,7 +421,7 @@
|
||||
focus. Select the \uicontrol Checkable check box to make a button checkable.
|
||||
To make the button checked, select the \uicontrol Checked check box.
|
||||
|
||||
Buttons that belong to the same parent item can be mutually exclusive.
|
||||
Buttons that belong to the same parent component can be mutually exclusive.
|
||||
Users can click a button to check it, and the previous selection is
|
||||
cleared. Users cannot uncheck the currently checked button by clicking
|
||||
it. Instead, they must click another button in the group to set the new
|
||||
@@ -463,7 +463,7 @@
|
||||
that the UI has to wait for the operation to complete.
|
||||
|
||||
A busy indicator is similar to an indeterminate \l {Progress Bar}. Both can
|
||||
be used to indicate background activity. The main difference is visual, and
|
||||
be used to indicate background activity. The main difference is visual and
|
||||
that a progress bar can also present a concrete amount of progress (when it
|
||||
can be determined). Due to the visual difference, busy indicators and
|
||||
indeterminate progress bars fit in different places in UIs.
|
||||
@@ -747,10 +747,10 @@
|
||||
|
||||
\section1 Summary of User Interaction Methods
|
||||
|
||||
The following table lists the QML types that you can use to add interaction
|
||||
methods to UIs. The \e Location column contains the tab name where you can
|
||||
find the type in \uicontrol Library. The \e MCU column indicates which types
|
||||
are supported on MCUs.
|
||||
The following table lists the components that you can use to add interaction
|
||||
methods to UIs. The \e Location column contains the module where you can
|
||||
find the component in \l Library > \uicontrol Components. The \e MCU column
|
||||
indicates which components are supported on MCUs.
|
||||
|
||||
\table
|
||||
\header
|
||||
@@ -762,118 +762,118 @@
|
||||
\row
|
||||
\li \inlineimage icons/busyindicator-icon16.png
|
||||
\li \l [QtQuickControls]{BusyIndicator}{Busy Indicator}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li Indicates activity while content is being loaded.
|
||||
\row
|
||||
\li \inlineimage icons/button-icon16.png
|
||||
\li \l [QtQuickControls]{Button}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li \inlineimage ok
|
||||
\li A push button that you can associate with an action.
|
||||
\row
|
||||
\li \inlineimage icons/checkbox-icon16.png
|
||||
\li \l [QtQuickControls]{CheckBox}{Check Box}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li \inlineimage ok
|
||||
\li An option button that can be toggled on (checked) or off
|
||||
(unchecked).
|
||||
\row
|
||||
\li \inlineimage icons/checkbox-icon16.png
|
||||
\li \l [QtQuickControls]{CheckDelegate}{Check Delegate}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li An item delegate that can be toggled on (checked) or off
|
||||
(unchecked).
|
||||
\row
|
||||
\li \inlineimage icons/combobox-icon16.png
|
||||
\li \l [QtQuickControls]{ComboBox}{Combo Box}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li A combined button and popup list that is populated by using a data
|
||||
model.
|
||||
\row
|
||||
\li \inlineimage icons/delaybutton-icon16.png
|
||||
\li \l [QtQuickControls]{DelayButton}{Delay Button}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li An option button that is triggered when held down long enough.
|
||||
\row
|
||||
\li \inlineimage icons/dial-icon16.png
|
||||
\li \l [QtQuickControls]{Dial}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li \inlineimage ok
|
||||
\li A circular dial that is rotated to set a value.
|
||||
\row
|
||||
\li \inlineimage flickable-icon16.png
|
||||
\li \l [QML]{Flickable}
|
||||
\li Qt Quick - Basic
|
||||
\li Default Components - Basic
|
||||
\li \inlineimage ok
|
||||
\li Items can be flicked horizontally or vertically.
|
||||
\row
|
||||
\li \inlineimage focusscope-icon16.png
|
||||
\li \l{FocusScope}{Focus Scope}
|
||||
\li Qt Quick - Basic
|
||||
\li Default Components - Basic
|
||||
\li
|
||||
\li Assists in keyboard focus handling when building reusable QML
|
||||
components.
|
||||
\row
|
||||
\li \inlineimage mouse-area-icon16.png
|
||||
\li \l [QtQuick]{MouseArea}{Mouse Area}
|
||||
\li Qt Quick - Basic
|
||||
\li Default Components - Basic
|
||||
\li \inlineimage ok
|
||||
\li Enables simple mouse handling.
|
||||
\row
|
||||
\li \inlineimage icons/pageindicator-icon16.png
|
||||
\li \l [QtQuickControls]{PageIndicator}{Page Indicator}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li Indicates the indicate the currently active page in a container of
|
||||
multiple pages.
|
||||
\row
|
||||
\li \inlineimage icons/progressbar-icon16.png
|
||||
\li \l [QtQuickControls]{ProgressBar}{Progress Bar}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li \inlineimage ok
|
||||
\li Indicates the progress of an operation.
|
||||
\row
|
||||
\li \inlineimage icons/radiobutton-icon16.png
|
||||
\li \l [QtQuickControls]{RadioButton}{Radio Button}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li \inlineimage ok
|
||||
\li An option button that can be switched on (checked) or off
|
||||
(unchecked).
|
||||
\row
|
||||
\li \inlineimage icons/radiobutton-icon16.png
|
||||
\li \l [QtQuickControls]{RadioDelegate}{Radio Delegate}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li An item delegate that can be toggled on (checked) or off
|
||||
(unchecked).
|
||||
\row
|
||||
\li \inlineimage icons/rangeslider-icon16.png
|
||||
\li \l [QtQuickControls]{RangeSlider}{Range Slider}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li Enables users to select a range of values by sliding two handles
|
||||
along a track.
|
||||
\row
|
||||
\li \inlineimage icons/roundbutton-icon16.png
|
||||
\li \l [QtQuickControls]{RoundButton}{Round Button}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li A push button with rounded corners that you can associate with an
|
||||
action.
|
||||
\row
|
||||
\li \inlineimage icons/slider-icon16.png
|
||||
\li \l [QtQuickControls]{Slider}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li \inlineimage ok
|
||||
\li Enables users to select a value by sliding a handle along a track.
|
||||
\row
|
||||
\li \inlineimage icons/spinbox-icon16.png
|
||||
\li \l [QtQuickControls]{SpinBox}{Spin Box}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li Enables users to specify a value by clicking the up or down buttons,
|
||||
by pressing up or down on the keyboard, or by entering a value in
|
||||
@@ -881,54 +881,54 @@
|
||||
\row
|
||||
\li \inlineimage icons/switch-icon16.png
|
||||
\li \l [QtQuickControls]{Switch}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li \inlineimage ok
|
||||
\li An option button that can be toggled on or off.
|
||||
\row
|
||||
\li \inlineimage icons/switch-icon16.png
|
||||
\li \l [QtQuickControls]{SwitchDelegate}{Switch Delegate}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li An item delegate with a switch indicator that can be toggled on or
|
||||
off.
|
||||
\row
|
||||
\li \inlineimage icons/toolbar-icon16.png
|
||||
\li \l [QtQuickControls] {TabBar}{Tab Bar}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li Enables users to switch between different views or subtasks.
|
||||
\row
|
||||
\li \inlineimage icons/toolbutton-icon16.png
|
||||
\li \l [QtQuickControls]{TabButton}{Tab Button}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li A button that is functionally similar to \uicontrol Button, but
|
||||
provides a look that is more suitable for a \uicontrol {Tab Bar}.
|
||||
\row
|
||||
\li \inlineimage icons/toolbar-icon16.png
|
||||
\li \l [QtQuickControls]{ToolBar}{Tool Bar}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li A container of application-wide and context sensitive actions and
|
||||
controls, such as navigation buttons and search fields.
|
||||
\row
|
||||
\li \inlineimage icons/toolbutton-icon16.png
|
||||
\li \l [QtQuickControls]{ToolButton}{Tool Button}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li A button that is functionally similar to \uicontrol Button, but
|
||||
provides a look that is more suitable for a \uicontrol {Tool Bar}.
|
||||
\row
|
||||
\li \inlineimage icons/toolseparator-icon16.png
|
||||
\li \l [QtQuickControls]{ToolSeparator}{Tool Separator}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li Separates a group of items from adjacent items on a
|
||||
\uicontrol {Tool Bar}.
|
||||
\row
|
||||
\li \inlineimage icons/tumbler-icon16.png
|
||||
\li \l [QtQuickControls]{Tumbler}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li A spinnable wheel of items that can be selected.
|
||||
\endtable
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Creator documentation.
|
||||
@@ -35,15 +35,15 @@
|
||||
\title Lists and Other Data Models
|
||||
|
||||
Applications typically need to handle and display data that is organized
|
||||
into list or grid views. Qt Quick uses models, views, and delegates for
|
||||
into list or grid views. Models, views, and delegates are used for
|
||||
this purpose. They modularize the visualization of data in order to give
|
||||
you control over the different aspects of the data. For example, you can
|
||||
swap a list view with a grid view with little changes to the data.
|
||||
Similarly, encapsulating an instance of the data in a delegate allows
|
||||
developers to dictate how to present or handle the data.
|
||||
|
||||
A \e model contains the data and its structure. There are several QML
|
||||
types for creating different types of models. A \e view is a container
|
||||
A \e model contains the data and its structure. There are several
|
||||
components for creating different types of models. A \e view is a container
|
||||
that displays the data in a list or a grid, or along a path. A \e delegate
|
||||
dictates how the data should appear in the view. The delegate takes each
|
||||
piece of data in the model and encapsulates it. The data is then accessible
|
||||
@@ -56,10 +56,10 @@
|
||||
|
||||
\section1 List and Grid Views
|
||||
|
||||
A list view organizes items as a list, whereas a grid view organizes them as
|
||||
a grid. By default, items in list and grid views flow vertically from left
|
||||
to right. They are laid out from left to right horizontally, and from top to
|
||||
bottom vertically.
|
||||
A list view organizes components as a list, whereas a grid view organizes
|
||||
them as a grid. By default, components in list and grid views flow
|
||||
vertically from left to right. They are laid out from left to right
|
||||
horizontally, and from top to bottom vertically.
|
||||
|
||||
You can change the list view orientation in the \uicontrol Orientation
|
||||
field and the grid view flow in the \uicontrol Flow field. You can change
|
||||
@@ -111,7 +111,7 @@
|
||||
|
||||
\note Setting the \uicontrol Cache property is not a replacement for
|
||||
creating efficient delegates. It can improve the smoothness of scrolling
|
||||
behavior at the expense of additional memory usage. The fewer objects and
|
||||
behavior at the expense of additional memory usage. The fewer items and
|
||||
bindings in a delegate, the faster a view can be scrolled. It is important
|
||||
to realize that setting a cache will only postpone issues caused by
|
||||
slow-loading delegates, it is not a solution to this problem.
|
||||
@@ -174,7 +174,7 @@
|
||||
You can replace the default model and delegate with other,
|
||||
more complex models and delegates in \uicontrol {Text Editor}.
|
||||
\l{ItemDelegate}{Item Delegate} and \l{SwipeDelegate}{Swipe Delegate}
|
||||
types are also available in \uicontrol Library.
|
||||
components are also available in \uicontrol Library.
|
||||
|
||||
\include qtquick-pathview-editor.qdocinc pathview
|
||||
\if defined(qtdesignstudio)
|
||||
@@ -183,10 +183,10 @@
|
||||
|
||||
\section1 Summary of Model Components
|
||||
|
||||
The following table lists the QML types that you can use to add data models
|
||||
The following table lists the components that you can use to add data models
|
||||
to UIs. The \e Location column contains the tab name where you can find the
|
||||
type in \uicontrol Library. The \e MCU column indicates which types are
|
||||
supported on MCUs.
|
||||
component in \l Library > \uicontrol Components. The \e MCU column indicates
|
||||
which components are supported on MCUs.
|
||||
|
||||
\table
|
||||
\header
|
||||
@@ -198,39 +198,39 @@
|
||||
\row
|
||||
\li \inlineimage gridview-icon16.png
|
||||
\li \l{GridView}{Grid View}
|
||||
\li Qt Quick - Views
|
||||
\li Default Components - Views
|
||||
\li
|
||||
\li A grid vizualization of a model.
|
||||
\row
|
||||
\li \inlineimage icons/itemdelegate-icon16.png
|
||||
\li \l{ItemDelegate}{Item Delegate}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li A standard view item that can be used as a delegate in various
|
||||
views and controls, such as \l ListView and \l ComboBox.
|
||||
\row
|
||||
\li \inlineimage listview-icon16.png
|
||||
\li \l{ListView}{List View}
|
||||
\li Qt Quick - Views
|
||||
\li Default Components - Views
|
||||
\li \inlineimage ok
|
||||
\li A list vizualization of a model.
|
||||
\row
|
||||
\li \inlineimage pathview-icon16.png
|
||||
\li \l{Path View}
|
||||
\li Qt Quick - Views
|
||||
\li Default Components - Views
|
||||
\li
|
||||
\li Vizualizes the contents of a model along a path.
|
||||
\row
|
||||
\li \inlineimage icons/scrollview-icon16.png
|
||||
\li \l [QtQuickControls] {ScrollView}{Scroll View}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li Provides scrolling for user-defined content. It can be used instead
|
||||
of a \l Flickable item.
|
||||
of a \l Flickable component.
|
||||
\row
|
||||
\li \inlineimage icons/stackview-icon16.png
|
||||
\li \l [QtQuickControls] {StackView}{Stack View}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li A stack-based navigation model.
|
||||
\if defined(qtdesignstudio)
|
||||
@@ -244,7 +244,7 @@
|
||||
\row
|
||||
\li \inlineimage icons/itemdelegate-icon16.png
|
||||
\li \l{SwipeDelegate}{Swipe Delegate}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li A view item that can be swiped left or right to expose more
|
||||
options or information. It is used as a delegate in views such
|
||||
@@ -252,7 +252,7 @@
|
||||
\row
|
||||
\li \inlineimage icons/swipeview-icon16.png
|
||||
\li \l[QtQuickControls] {SwipeView}{Swipe View}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li \inlineimage ok
|
||||
\li Enables users to navigate pages by swiping sideways.
|
||||
\endtable
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Creator documentation.
|
||||
@@ -31,30 +31,30 @@
|
||||
\title Images
|
||||
\target basic-image
|
||||
|
||||
The Image type is used for adding images to the UI in several supported
|
||||
The Image component is used for adding images to the UI in several supported
|
||||
formats, including bitmap formats, such as PNG and JPEG, and vector graphics
|
||||
formats, such as SVG. You must add the images to your project in the
|
||||
\uicontrol Assets tab of \uicontrol Library to be able to use them in
|
||||
designs.
|
||||
|
||||
\image qtquick-designer-image-type.png "Image type in different views"
|
||||
\image qtquick-designer-image-type.png "Image component in different views"
|
||||
|
||||
When you drag and drop an image file from the \uicontrol Assets tab of
|
||||
\uicontrol Library to \uicontrol Navigator or \uicontrol {Form Editor},
|
||||
\QC automatically creates a component of the Image type for you with
|
||||
\QC automatically creates a component of the Image component for you with
|
||||
the path to the image file set as the value of the \uicontrol Source
|
||||
field in \uicontrol Properties.
|
||||
|
||||
To load images from a URL using a supported URL scheme, specify the URL
|
||||
in the \uicontrol Source field.
|
||||
|
||||
You can use the \l {Border Image} type to display an image,
|
||||
You can use the \l {Border Image} component to display an image,
|
||||
such as a PNG file, as a border and a background. For more
|
||||
information about using border images to create buttons, see
|
||||
\l {Creating Scalable Buttons and Borders}.
|
||||
|
||||
If you need to display animated images, such as GIFs, use the
|
||||
\l {Animated Image} type.
|
||||
\l {Animated Image} component.
|
||||
|
||||
\section1 Image Size
|
||||
|
||||
@@ -63,13 +63,13 @@
|
||||
If the image \uicontrol Size is not specified, the size of the source
|
||||
image is used automatically.
|
||||
|
||||
By default, explicitly setting the width and height of the item causes
|
||||
By default, explicitly setting the width and height of the component causes
|
||||
the image to be scaled to that size. To change this behavior, set the
|
||||
value of the \uicontrol {Fill mode} field. Images can be stretched, tiled,
|
||||
or scaled uniformly to the specified size with or without cropping. The
|
||||
\uicontrol Pad option means that the image is not transformed.
|
||||
|
||||
\note If the \uicontrol Clip check box is not selected, the item might
|
||||
\note If the \uicontrol Clip check box is not selected, the component might
|
||||
paint outside its bounding rectangle even if the \uicontrol {Fill mode}
|
||||
is set to \uicontrol PreserveAspectCrop.
|
||||
|
||||
@@ -146,11 +146,11 @@
|
||||
|
||||
\section1 Border Image
|
||||
|
||||
The Border Image type extends the features of the Image type. It is used
|
||||
to create borders out of images by scaling or tiling parts of each image. A
|
||||
source image is broken into 9 regions that are scaled or tiled individually.
|
||||
The corner regions are not scaled at all, while the horizontal and vertical
|
||||
regions are scaled according to the values of the
|
||||
The Border Image component extends the features of the Image component.
|
||||
It is used to create borders out of images by scaling or tiling parts
|
||||
of each image. A source image is broken into 9 regions that are scaled or
|
||||
tiled individually. The corner regions are not scaled at all, while the
|
||||
horizontal and vertical regions are scaled according to the values of the
|
||||
\uicontrol {Horizontal tile mode} and \uicontrol {Vertical tile mode} field,
|
||||
or both.
|
||||
|
||||
@@ -169,13 +169,13 @@
|
||||
\note You cannot change the \uicontrol {Source size} of a border image.
|
||||
|
||||
For examples of using border images, see the documentation of the
|
||||
\l [QtQuick]{BorderImage} type.
|
||||
\l [QtQuick]{BorderImage} component.
|
||||
|
||||
\section1 Animated Image
|
||||
|
||||
The Animated Image type extends the features of the Image type, providing
|
||||
a way to play animations stored as images containing a series of frames,
|
||||
such as those stored in GIF files.
|
||||
The Animated Image component extends the features of the Image component,
|
||||
providing a way to play animations stored as images containing a series of
|
||||
frames, such as those stored in GIF files.
|
||||
|
||||
Set the speed of the animation in the \uicontrol Speed field. The speed is
|
||||
measured in percentage of the original animated image speed. The default
|
||||
@@ -199,10 +199,10 @@
|
||||
|
||||
\section1 Summary of Images
|
||||
|
||||
The following table lists the QML types that you can use to add images.
|
||||
The \e Location column contains the tab name where you can find the type
|
||||
in \uicontrol Library. The \e MCU column indicates which types are supported
|
||||
on MCUs.
|
||||
The following table lists the components that you can use to add images.
|
||||
The \e Location column contains the tab name where you can find the
|
||||
component in \l Library > \uicontrol Components. The \e MCU column
|
||||
indicates which components are supported on MCUs.
|
||||
|
||||
\table
|
||||
\header
|
||||
@@ -214,20 +214,20 @@
|
||||
\row
|
||||
\li \inlineimage animated-image-icon16.png
|
||||
\li \l [QtQuick]{AnimatedImage}{Animated Image}
|
||||
\li Qt Quick - Basic
|
||||
\li Default Components - Basic
|
||||
\li
|
||||
\li An images that stores animations containing a series of frames,
|
||||
such as those stored in GIF files.
|
||||
\row
|
||||
\li \inlineimage border-image-icon16.png
|
||||
\li \l [QtQuick]{BorderImage}{Border Image}
|
||||
\li Qt Quick - Basic
|
||||
\li Default Components - Basic
|
||||
\li \inlineimage ok
|
||||
\li An image that is used as a border or background.
|
||||
\row
|
||||
\li \inlineimage image-icon16.png
|
||||
\li \l [QtQuick]{Image}
|
||||
\li Qt Quick - Basic
|
||||
\li Default Components - Basic
|
||||
\li \inlineimage ok
|
||||
\li An image in one of the supported formats, including bitmap formats
|
||||
such as PNG and JPEG and vector graphics formats such as SVG.
|
||||
@@ -238,7 +238,7 @@
|
||||
\li Studio Components
|
||||
\li
|
||||
\li An icon from an ISO 7000 icon library specified as a \l Picture
|
||||
type. You can select the icon to use and its color.
|
||||
component. You can select the icon to use and its color.
|
||||
\endif
|
||||
\endtable
|
||||
*/
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Creator documentation.
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
\section1 Path View
|
||||
|
||||
The Path View type lays out data provided by data models on a \l{Path}.
|
||||
The Path View component lays out data provided by data models on a \l{Path}.
|
||||
|
||||
A graphical spline editor enables you to specify path view paths, which
|
||||
is a non-trivial task to do in the code editor.
|
||||
@@ -36,7 +36,7 @@
|
||||
\image qmldesigner-pathview-editor.png "Path View editor"
|
||||
|
||||
To start editing the path, double-click the path view in
|
||||
\uicontrol {Form Editor}. The editor composes the path of PathCubic path
|
||||
\l {Form Editor}. The editor composes the path of PathCubic path
|
||||
objects. They are cubic Bezier curves to a given position with two control
|
||||
points. Drag and drop the control points in \uicontrol {Form Editor} to
|
||||
construct the curve.
|
||||
@@ -78,7 +78,7 @@
|
||||
|
||||
\section1 SvgPath
|
||||
|
||||
The Svg Path type uses an SVG path data string to draw a path as a line.
|
||||
The Svg Path component uses an SVG path data string to draw a path as a line.
|
||||
|
||||
The stroke property values that specify the appearance of the path are
|
||||
described in \l{Strokes}.
|
||||
@@ -89,10 +89,10 @@
|
||||
string that specifies the path. For more information, see
|
||||
\l{https://www.w3.org/TR/SVG/paths.html#PathData}{W3C SVG Path Data}.
|
||||
|
||||
\note Mixing SvgPath with other types of elements is not always supported.
|
||||
\note Mixing SvgPath with other types of components is not always supported.
|
||||
For example, when \l Shape is backed by \c GL_NV_path_rendering, a
|
||||
\l ShapePath can contain one or more SvgPath elements, or one or more
|
||||
elements of other types, but not both.
|
||||
components of other types, but not both.
|
||||
|
||||
//! [svgpath]
|
||||
*/
|
||||
|
@@ -45,18 +45,18 @@
|
||||
\image studio-shapes.png "Shapes in Form Editor"
|
||||
|
||||
\else
|
||||
You can use the Rectangle type to draw basic shapes in
|
||||
\uicontrol {Form Editor}.
|
||||
You can use the Rectangle component to draw basic shapes in
|
||||
\l {Form Editor}.
|
||||
\image qml-shapes.png "Shapes in Form Editor"
|
||||
\endif
|
||||
|
||||
Most visual types in \uicontrol Library are based on the \l [QtQuick]
|
||||
{Item} type. Even though it has no visual appearance itself (similarly
|
||||
Most visual components in \uicontrol Library are based on the \l [QtQuick]
|
||||
{Item} component. Even though it has no visual appearance itself (similarly
|
||||
to a mouse area, for example), it defines all the properties that are
|
||||
common across visual types, such as position, size, and visibility. For
|
||||
common across visual components, such as position, size, and visibility. For
|
||||
more information, see \l{Specifying Basic Component Properties}.
|
||||
|
||||
In addition, each type has a set of properties that specify its visual
|
||||
In addition, each component has a set of properties that specify its visual
|
||||
appearance and behavior. You can modify the property values to set fill
|
||||
and border colors, stroke width, and other characteristics of the shapes.
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
\target basic-rectangle
|
||||
\section1 Rectangle
|
||||
|
||||
The basic \l [QtQuick] {Rectangle} QML type is used for drawing shapes
|
||||
The basic \l [QtQuick] {Rectangle} component is used for drawing shapes
|
||||
with four sides and corners, as well as a solid border.
|
||||
|
||||
\if defined(qtdesignstudio)
|
||||
@@ -101,9 +101,9 @@
|
||||
\section2 Studio Rectangle
|
||||
|
||||
If you want to modify each corner of the rectangle independently
|
||||
or use a dashed border, select the Rectangle type in the
|
||||
or use a dashed border, select the Rectangle component in the
|
||||
\uicontrol {Studio Components} tab of \uicontrol Library instead
|
||||
of the basic rectangle type.
|
||||
of the basic rectangle component.
|
||||
|
||||
By setting the values of properties in the \uicontrol {Corner Radiuses}
|
||||
group, you can draw each corner independently. By using radius values
|
||||
@@ -121,7 +121,7 @@
|
||||
|
||||
\section1 Border
|
||||
|
||||
The Border type is used to create borders out of four segments:
|
||||
The Border component is used to create borders out of four segments:
|
||||
left, top, right, and bottom. By selecting the \uicontrol {Draw top},
|
||||
\uicontrol {Draw right}, \uicontrol {Draw bottom}, and
|
||||
\uicontrol {Draw left} check boxes, you can determine whether each
|
||||
@@ -141,7 +141,7 @@
|
||||
line.
|
||||
|
||||
In the \uicontrol {Border mode} field, you can specify whether the border
|
||||
is drawn along the inside or outside edge of the item, or on top of the
|
||||
is drawn along the inside or outside edge of the component, or on top of the
|
||||
edge.
|
||||
|
||||
If you select a dashed or dotted pattern in the \uicontrol {Stroke style}
|
||||
@@ -170,8 +170,8 @@
|
||||
|
||||
\section1 Triangle
|
||||
|
||||
The Triangle type can be used to draw triangles with different dimensions
|
||||
and shapes. The type is enclosed in an invisible rectangle that determines
|
||||
The Triangle component can be used to draw triangles with different dimensions
|
||||
and shapes. The component is enclosed in an invisible rectangle that determines
|
||||
its size. The dimensions of the triangle can be changed to make it elongated
|
||||
or squatter with space around it by setting the left, right, top, and bottom
|
||||
margins in the \uicontrol Margins group. The margins are set between the
|
||||
@@ -210,7 +210,7 @@
|
||||
|
||||
\section1 Pie
|
||||
|
||||
The Pie type is used to create a pie slice, a pie that is missing slices,
|
||||
The Pie component is used to create a pie slice, a pie that is missing slices,
|
||||
or just the pie rind (similar to an arc), depending on the values of the
|
||||
\uicontrol Begin, \uicontrol End, and \uicontrol {Hide line} properties.
|
||||
|
||||
@@ -222,10 +222,10 @@
|
||||
|
||||
\section1 Summary of Shapes
|
||||
|
||||
The following table lists the QML types that you can use to draw shapes.
|
||||
The \e Location column contains the tab name where you can find the type
|
||||
in \uicontrol Library. The \e MCU column indicates which types are supported
|
||||
on MCUs.
|
||||
The following table lists the components that you can use to draw shapes.
|
||||
The \e Location column contains the tab name where you can find the
|
||||
component in \l Library > \uicontrol Components. The \e MCU column
|
||||
indicates which components are supported on MCUs.
|
||||
|
||||
\table
|
||||
\header
|
||||
@@ -255,7 +255,7 @@
|
||||
\row
|
||||
\li \inlineimage rect-icon16.png
|
||||
\li \l Rectangle
|
||||
\li Qt Quick - Basic
|
||||
\li Default Components - Basic
|
||||
\li \inlineimage ok
|
||||
\li A rectangle that is painted with a solid fill color or linear
|
||||
gradient and an optional border. You can use the radius property
|
||||
|
@@ -30,11 +30,11 @@
|
||||
|
||||
\title Text
|
||||
|
||||
You can use several different text types to add read-only or editable text
|
||||
to a UI, such as titles or labels and text input fields with placeholder
|
||||
text. The \l Text type adds formatted text, the \l TextEdit type adds a
|
||||
multiline line edit, and the \l TextInput type adds a single editable line
|
||||
field.
|
||||
You can use several different text components to add read-only or editable
|
||||
text to a UI, such as titles or labels and text input fields with
|
||||
placeholder text. The \l Text component adds formatted text, the \l TextEdit
|
||||
component adds a multiline line edit, and the \l TextInput component adds a
|
||||
single editable line field.
|
||||
|
||||
You can select the font to use and specify extensive properties for each
|
||||
text string, such as size in points or pixels, style name, emphasis,
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
\youtube yOUdg1o2KJM
|
||||
|
||||
To create a label with a background, use the \l Label type from the
|
||||
To create a label with a background, use the \l Label component from the
|
||||
Qt Quick Controls module.
|
||||
|
||||
\section1 Using Rich Text
|
||||
@@ -78,7 +78,7 @@
|
||||
size, emphasis, aligment, and spacing of the text. Specify the font
|
||||
size in either points or pixels in the \uicontrol Size field.
|
||||
|
||||
\image qtquick-designer-text-properties.png "Text type properties"
|
||||
\image qtquick-designer-text-properties.png "Text component properties"
|
||||
|
||||
To display custom fonts in the list of available fonts in the
|
||||
\uicontrol Font field, add them in the \uicontrol Assets tab
|
||||
@@ -104,8 +104,8 @@
|
||||
|
||||
\section1 Text Alignment
|
||||
|
||||
You can align text items horizontally and vertically. By default, text is
|
||||
vertically aligned to the top. Horizontal alignment follows the natural
|
||||
You can align text components horizontally and vertically. By default, text
|
||||
is vertically aligned to the top. Horizontal alignment follows the natural
|
||||
alignment of the text. By default, left-to-right text like English is
|
||||
aligned to the left side of the text area, whereas right-to-left text
|
||||
like Arabic is aligned to the right side of the text area.
|
||||
@@ -116,7 +116,7 @@
|
||||
For a single line of text, the size of the text is the area of the text.
|
||||
In this common case, all alignments are equivalent. To center a text in
|
||||
its parent, use \l{Setting Anchors and Margins}{anchoring} or bind the
|
||||
width of the text item to that of the parent. For more information, see
|
||||
width of the text component to that of the parent. For more information, see
|
||||
\l{Setting Bindings}.
|
||||
|
||||
\section1 Text and Style Colors
|
||||
@@ -129,17 +129,17 @@
|
||||
or sunken text. You set the font style in the \uicontrol Style field of
|
||||
the \uicontrol Font section.
|
||||
|
||||
For the \uicontrol {Text Edit} and \uicontrol {Text Input} types, you
|
||||
For the \uicontrol {Text Edit} and \uicontrol {Text Input} components, you
|
||||
can also set the color of selected text and the text highlight color
|
||||
that is used behind selections in the \uicontrol {Selected text color}
|
||||
and \uicontrol {Selection color} fields.
|
||||
|
||||
For more information about selecting colors, see \l{Picking Colors}. You
|
||||
can only set solid colors for text items.
|
||||
can only set solid colors for text components.
|
||||
|
||||
\section1 Advanced Text Properties
|
||||
|
||||
The height and width of a text item are determined automatically depending
|
||||
The height and width of a text component are determined automatically depending
|
||||
on the values of the properties you set, to accommodate the length of the
|
||||
string that you specify in the \uicontrol Text field and the font size, for
|
||||
example.
|
||||
@@ -148,15 +148,15 @@
|
||||
size of the displayed text is determined. Select \uicontrol FixedSize to
|
||||
use the size specified in the \uicontrol Size field in pixels or points.
|
||||
Select \uicontrol HorizontalFit or \uicontrol VerticalFit to use the largest
|
||||
size up to the size specified that fits the width or height of the item.
|
||||
size up to the size specified that fits the width or height of the component.
|
||||
Select \uicontrol Fit to use the largest size up to the size specified that
|
||||
fits within the width and height of the item. The font size of fitted text
|
||||
fits within the width and height of the component. The font size of fitted text
|
||||
has a minimum bound specified by the \uicontrol {Minimum size} field and
|
||||
maximum bound specified by the \uicontrol Size field.
|
||||
|
||||
In the \uicontrol {Wrap mode} field, you can wrap the text to the text
|
||||
item's width. The text will only wrap if you set an explicit width for
|
||||
the text item. By default, text is not wrapped. Select \uicontrol WordWrap
|
||||
component's width. The text will only wrap if you set an explicit width for
|
||||
the text component. By default, text is not wrapped. Select \uicontrol WordWrap
|
||||
to restrict wrapping to word boundaries only. Select \uicontrol WrapAnywhere
|
||||
to enable wrapping at any point on a line, even if it occurs in the middle
|
||||
of a word. Select \uicontrol Wrap to wrap at a word boundary, if possible,
|
||||
@@ -165,7 +165,7 @@
|
||||
You can use the \uicontrol Elide property with the \uicontrol Wrap
|
||||
option to fit a single line of plain text to a set width. Select
|
||||
\uicontrol ElideRight, and set the \uicontrol {Maximum line count}
|
||||
or the text item height (in the \uicontrol H field). If you set both,
|
||||
or the text component height (in the \uicontrol H field). If you set both,
|
||||
the maximum line count will apply unless the lines do not fit in the
|
||||
height allowed.
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
better performance than rich text.
|
||||
|
||||
In the \uicontrol {Render type} field, you can override the default
|
||||
rendering type for a text item. Select \uicontrol NativeRendering if
|
||||
rendering type for a text component. Select \uicontrol NativeRendering if
|
||||
you prefer text to look native on the target platform and do not
|
||||
require advanced features such as \l {Managing 2D Transformations}
|
||||
{transformation} of the text. Using rotation or scaling in combination
|
||||
@@ -206,12 +206,12 @@
|
||||
\target text-edit
|
||||
\section1 Text Input
|
||||
|
||||
You can use the \uicontrol {Text Edit} and \uicontrol {Text Input} types to
|
||||
add text fields where users can enter text.
|
||||
You can use the \uicontrol {Text Edit} and \uicontrol {Text Input}
|
||||
components to add text fields where users can enter text.
|
||||
|
||||
The Text Input type displays a single line of editable plain text, whereas
|
||||
the Text Edit type displays a block of editable, formatted text. Both types
|
||||
are used to accept text input.
|
||||
The Text Input component displays a single line of editable plain text,
|
||||
whereas the Text Edit component displays a block of editable, formatted
|
||||
text. Both components are used to accept text input.
|
||||
|
||||
\image qtquick-designer-text-input-properties.png "Text input field properties"
|
||||
|
||||
@@ -258,7 +258,7 @@
|
||||
be overwritten.
|
||||
|
||||
If the \uicontrol {Persistent selection} check box is selected, a text edit
|
||||
or input keeps its selection when active focus moves to another item.
|
||||
or input keeps its selection when active focus moves to another component.
|
||||
|
||||
To use a pointer device for selecting text, select the
|
||||
\uicontrol {Select by mouse} check box.
|
||||
@@ -276,10 +276,10 @@
|
||||
|
||||
\section1 Summary of Text Components
|
||||
|
||||
The following table lists the QML types that you can use to add text to
|
||||
The following table lists the components that you can use to add text to
|
||||
UIs. The \e Location column contains the tab name where you can find the
|
||||
type in \uicontrol Library. The \e MCU column indicates which types are
|
||||
supported on MCUs.
|
||||
component in \l Library > \uicontrol Components. The \e MCU column
|
||||
indicates which components are supported on MCUs.
|
||||
|
||||
\table
|
||||
\header
|
||||
@@ -291,37 +291,37 @@
|
||||
\row
|
||||
\li \inlineimage icons/label-icon16.png
|
||||
\li \l [QtQuickControls]{Label}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li A text label with inherited styling and font.
|
||||
\row
|
||||
\li \inlineimage text-icon16.png
|
||||
\li \l [QtQuick]{Text}
|
||||
\li Qt Quick - Basic
|
||||
\li Default Components - Basic
|
||||
\li \inlineimage ok
|
||||
\li Formatted read-only text.
|
||||
\row
|
||||
\li \inlineimage icons/textarea-icon16.png
|
||||
\li \l [QtQuickControls]{TextArea}{Text Area}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li Multiple lines of editable formatted text.
|
||||
\row
|
||||
\li \inlineimage text-edit-icon16.png
|
||||
\li \l [QtQuick]{TextEdit}{Text Edit}
|
||||
\li Qt Quick - Basic
|
||||
\li Default Components - Basic
|
||||
\li
|
||||
\li A single line of editable formatted text that can be validated.
|
||||
\row
|
||||
\li \inlineimage icons/textfield-icon16.png
|
||||
\li \l [QtQuickControls]{TextField}{Text Field}
|
||||
\li Qt Quick - Controls 2
|
||||
\li Qt Quick Controls
|
||||
\li
|
||||
\li A single line of editable plain text.
|
||||
\row
|
||||
\li \inlineimage text-input-icon16.png
|
||||
\li \l [QtQuick]{TextInput}{Text Input}
|
||||
\li Qt Quick - Basic
|
||||
\li Default Components - Basic
|
||||
\li
|
||||
\li A single line of editable plain text that can be validated.
|
||||
\endtable
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Design Studio documentation.
|
||||
@@ -55,11 +55,10 @@
|
||||
changed in all the child components, for example.
|
||||
\li \l {Adding States}
|
||||
|
||||
Qt Quick allows you to declare various UI states that describe
|
||||
how component properties change from a base state. Therefore,
|
||||
states can be a useful way of organizing your UI
|
||||
logic. You can associate transitions with items to define
|
||||
how their properties will animate when they change due to a state
|
||||
change.
|
||||
You can declare various UI states that describe how component
|
||||
properties change from a base state. Therefore, states can be
|
||||
a useful way of organizing your UI logic. You can associate
|
||||
transitions with components to define how their properties will
|
||||
animate when they change due to a state change.
|
||||
\endlist
|
||||
*/
|
||||
|
@@ -38,9 +38,9 @@
|
||||
the property that is to be animated, and apply the animation depending on
|
||||
the type of behavior that is required.
|
||||
|
||||
You can drag and drop the following QML types from \uicontrol Library
|
||||
> \uicontrol {QML Types} > \uicontrol {Qt Quick - Animation} to
|
||||
\uicontrol Navigator or \uicontrol {Form Editor}:
|
||||
You can drag and drop the following components from \l Library >
|
||||
\uicontrol Components > \uicontrol {Default Components} >
|
||||
\uicontrol Animation to \l Navigator or \l {Form Editor}:
|
||||
|
||||
\list
|
||||
\li \l [QML] {ColorAnimation}{Color Animation} is a specialized
|
||||
@@ -65,10 +65,10 @@
|
||||
animations to be run sequentially.
|
||||
\endlist
|
||||
|
||||
For more information about using the QML types, see
|
||||
For more information about using the components, see
|
||||
\l{Animation and Transitions in Qt Quick}.
|
||||
|
||||
For more information about animating properties in the \uicontrol Timeline
|
||||
For more information about animating properties in the \l Timeline
|
||||
view, see \l{Creating Animations}. For more information about animating
|
||||
property changes in states, see \l{Animating Transitions Between States}.
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Creator documentation.
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
\title Creating Buttons
|
||||
|
||||
To create a button type:
|
||||
To create a button component:
|
||||
|
||||
\list 1
|
||||
|
||||
@@ -49,20 +49,20 @@
|
||||
\uicontrol Choose to create a QML file called Button.qml (for
|
||||
example).
|
||||
|
||||
\note Types are listed in the \uicontrol Library only if the
|
||||
filename begins with a capital letter.
|
||||
\note Components are listed in \l Library > \uicontrol Components >
|
||||
\uicontrol {My Components} only if the filename begins with a
|
||||
capital letter.
|
||||
|
||||
\li Click \uicontrol {Design} to edit the file in the
|
||||
\uicontrol {Form Editor}.
|
||||
\li Click \uicontrol {Design} to edit the file in \l {Form Editor}.
|
||||
|
||||
\li In the \uicontrol Navigator, select \uicontrol Item and set the
|
||||
width (\uicontrol W) and height (\uicontrol H) of the button in the
|
||||
\uicontrol Properties view.
|
||||
\li In \l Navigator, select \uicontrol Item and set the width
|
||||
(\uicontrol W) and height (\uicontrol H) of the button in
|
||||
\l Properties.
|
||||
|
||||
\li Drag and drop a \uicontrol Rectangle from the \uicontrol Library to
|
||||
the item in \uicontrol Navigator. This creates a nested item where
|
||||
the item is the parent of the rectangle. Items are positioned
|
||||
relative to their parents.
|
||||
\li Drag and drop a \uicontrol Rectangle from \uicontrol Library to
|
||||
the component in \uicontrol Navigator. This creates a nested
|
||||
component where the Item is the parent of the Rectangle. Components
|
||||
are positioned relative to their parents.
|
||||
|
||||
\li In the \uicontrol Properties view, modify the appearance of the
|
||||
rectangle:
|
||||
@@ -76,17 +76,17 @@
|
||||
|
||||
\li Select \uicontrol {Layout}, and then select the
|
||||
\inlineimage icons/anchor-fill.png
|
||||
(\uicontrol {Fill to Parent}) button to anchor the rectangle to
|
||||
the item.
|
||||
(\uicontrol {Fill to Parent}) button to anchor the Rectangle to
|
||||
the Item.
|
||||
|
||||
|
||||
\endlist
|
||||
|
||||
\li Drag and drop a \uicontrol {Text} type to the item in
|
||||
\li Drag and drop a \uicontrol {Text} component to the Item in
|
||||
\uicontrol Navigator.
|
||||
|
||||
\li In the \uicontrol Properties view, edit the properties of the \uicontrol Text
|
||||
type.
|
||||
\li In the \uicontrol Properties view, edit the properties of the
|
||||
\uicontrol Text component
|
||||
|
||||
\list a
|
||||
|
||||
@@ -110,16 +110,16 @@
|
||||
|
||||
\endlist
|
||||
|
||||
To be useful, the button type has to be created in a project.
|
||||
When you work on other QML files in the project to create screens
|
||||
or other components for the UI, the button type appears in the
|
||||
\uicontrol {My QML Components} tab of the \uicontrol Library view.
|
||||
To be useful, the button component has to be created in a project.
|
||||
When you work on other files in the project to create screens
|
||||
or other components for the UI, the button component appears in
|
||||
\uicontrol Library > \uicontrol Components > \uicontrol {My Components}.
|
||||
You can use it to create button instances and modify their properties
|
||||
to assign them useful IDs, change their appearance, and set the button
|
||||
text for each button instance, for example.
|
||||
|
||||
To create a graphical button that scales beautifully without using
|
||||
vector graphics, use the \l {Border Image} type. For more
|
||||
vector graphics, use the \l {Border Image} component. For more
|
||||
information, see \l{Creating Scalable Buttons and Borders}.
|
||||
*/
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
|
||||
\title Creating Scalable Buttons and Borders
|
||||
|
||||
You can use the \l {Border Image} type to display an image, such as a
|
||||
You can use the \l {Border Image} component to display an image, such as a
|
||||
PNG file, as a border and a background.
|
||||
|
||||
Use two border images and suitable graphics to change the appearance of
|
||||
@@ -141,49 +141,49 @@
|
||||
change the appearance of the button depending on other mouse events,
|
||||
such as hovered.
|
||||
|
||||
Use a \l Text type to add button text.
|
||||
Use a \l Text component to add button text.
|
||||
You can use states also to change the button text color and font size. For
|
||||
example, you can scale the button text up or down.
|
||||
|
||||
Add a \l {Mouse Area} type that covers the whole area and
|
||||
Add a \l {Mouse Area} component that covers the whole area and
|
||||
reacts to mouse events.
|
||||
|
||||
\image qmldesigner-borderimage-type.png "Button type in Form Editor and States"
|
||||
\image qmldesigner-borderimage-type.png "Button component in Form Editor and States"
|
||||
|
||||
\section1 Creating the Button Type
|
||||
\section1 Creating the Button Component
|
||||
|
||||
To create a button type, select \uicontrol File >
|
||||
To create a button component, select \uicontrol File >
|
||||
\uicontrol {New File or Project} >
|
||||
\if defined(qtcreator)
|
||||
\uicontrol Qt > \uicontrol {QML File (Qt Quick 2)} >
|
||||
\else
|
||||
\uicontrol {Qt Quick Files} > \uicontrol {Qt Quick File} >
|
||||
\endif
|
||||
\uicontrol Choose to create a QML file called Button.qml (for example).
|
||||
\uicontrol Choose to create a file called Button.qml (for example).
|
||||
|
||||
\note Types are listed in the \uicontrol Library only if the
|
||||
filename begins with a capital letter.
|
||||
\note Components are listed in \l Library > \uicontrol Components >
|
||||
\uicontrol {My Components} only if the filename begins with a
|
||||
capital letter.
|
||||
|
||||
\section1 Constructing the Button Component
|
||||
|
||||
To construct the button component:
|
||||
|
||||
\list 1
|
||||
\li Click \uicontrol {Design} to edit the QML file in the
|
||||
\uicontrol {Form Editor}.
|
||||
\li In the \uicontrol {Assets} tab of \uicontrol Library, select
|
||||
\uicontrol {Add New Assets} to copy the image files you want
|
||||
to use to the project folder.
|
||||
\li In the \uicontrol Navigator, select the root item and set the
|
||||
\li Click \uicontrol {Design} to edit the component file in
|
||||
\l {Form Editor}.
|
||||
\li In the \uicontrol {Assets} tab of \l Library, select
|
||||
\inlineimage plus.png
|
||||
to copy the image files you want to use to the project folder.
|
||||
\li In \l Navigator, select the root component and set the
|
||||
width (\uicontrol W) and height (\uicontrol H) of the button in the
|
||||
\uicontrol Properties view to match the size of the images
|
||||
\l Properties view to match the size of the images
|
||||
you plan to use. This specifies the initial size of the button
|
||||
component.
|
||||
\li Drag and drop two \uicontrol {Border Image} types from
|
||||
\uicontrol Library to the root item in \uicontrol Navigator.
|
||||
\li Drag and drop a \uicontrol Text type to the root item.
|
||||
\li Drag and drop a \uicontrol {Mouse Area} to the root item in
|
||||
\uicontrol Navigator.
|
||||
\li Drag and drop two \uicontrol {Border Image} components from
|
||||
\uicontrol Library to the root component in \uicontrol Navigator.
|
||||
\li Drag and drop a \uicontrol Text component to the root component.
|
||||
\li Drag and drop a \uicontrol {Mouse Area} to the root component.
|
||||
\li Select a border image to edit the values of its properties:
|
||||
\list a
|
||||
\li In the \uicontrol Id field, enter an ID for the border
|
||||
@@ -208,11 +208,11 @@
|
||||
\inlineimage icons/anchor-fill.png
|
||||
(\uicontrol {Fill to Parent}) button.
|
||||
\endlist
|
||||
\li Select the text item to specify font size and color in
|
||||
\li Select the text component to specify font size and color in
|
||||
\uicontrol Properties:
|
||||
\list a
|
||||
\li In the \uicontrol Color field, use
|
||||
the color picker to select the font color, or enter a value
|
||||
\li In the \uicontrol Color field, use the \l{Picking Colors}
|
||||
{color picker} to select the font color, or enter a value
|
||||
in the field.
|
||||
\li In \uicontrol Font group, \uicontrol Size field, enter the
|
||||
font size.
|
||||
@@ -230,7 +230,7 @@
|
||||
\section1 Using States to Change Component Property Values
|
||||
|
||||
\list 1
|
||||
\li In the \uicontrol States view, select \uicontrol {Create New State}
|
||||
\li In the \l States view, select \uicontrol {Create New State}
|
||||
twice to create two new states.
|
||||
\image qmldesigner-borderimage-states.png "Active and inactive states"
|
||||
\li Select \uicontrol State1.
|
||||
@@ -239,10 +239,10 @@
|
||||
, and then select \uicontrol {Set when Condition} to determine
|
||||
when the state should be applied.
|
||||
\li In the \uicontrol {Binding Editor}, select the \c mouseArea
|
||||
type and the \c pressed signal to specify that the state is
|
||||
component and the \c pressed signal to specify that the state is
|
||||
applied when the mouse button is pressed down.
|
||||
\image qmldesigner-borderimage-bindings.png "Active state when condition"
|
||||
\li Select the text item in \uicontrol Navigator to specify that the
|
||||
\li Select the text component in \uicontrol Navigator to specify that the
|
||||
text size is scaled up when the button is pressed down.
|
||||
\li In \uicontrol Properties, select the \uicontrol Advanced tab, and
|
||||
increase the value of the \uicontrol Scale property.
|
||||
@@ -255,8 +255,6 @@
|
||||
specify that the state is applied when the mouse button is not
|
||||
pressed down.
|
||||
\image qmldesigner-borderimage-bindings1.png "Inactive state when condition"
|
||||
it in the \e inactive state by changing the value of its
|
||||
\uicontrol Visibility property in \uicontrol Properties.
|
||||
\li Press \key {Ctrl+S} to save the button.
|
||||
\li Select the \inlineimage live_preview.png
|
||||
(\uicontrol {Show Live Preview}) button to check how the
|
||||
@@ -265,10 +263,10 @@
|
||||
component.
|
||||
\endlist
|
||||
|
||||
To be useful, the button type has to be created in a project.
|
||||
When you work on other QML files in the project to create screens
|
||||
or other components for the UI, the button type appears in the
|
||||
\uicontrol {My QML Components} tab of the \uicontrol Library view.
|
||||
To be useful, the button component has to be created in a project.
|
||||
When you work on other files in the project to create screens
|
||||
or other components for the UI, the button component appears in
|
||||
\l Library > \uicontrol Components > \uicontrol {My Components}.
|
||||
You can drag and drop it to \uicontrol {Form Editor} or
|
||||
\uicontrol Navigator to create button instances and modify the values
|
||||
of their properties to assign them useful IDs, change their appearance,
|
||||
|
@@ -180,15 +180,15 @@
|
||||
|
||||
Choose \uicontrol Tools > \uicontrol Options > \uicontrol {Qt Quick} >
|
||||
\uicontrol {Qt Quick Designer} to specify settings for snapping. In the
|
||||
\uicontrol {Parent item padding} field, specify the
|
||||
\uicontrol {Parent component padding} field, specify the
|
||||
distance in pixels between the parent component and the snapping lines. In
|
||||
the \uicontrol {Sibling item spacing} field, specify the distance in pixels
|
||||
between sibling components and the snapping lines.
|
||||
the \uicontrol {Sibling component spacing} field, specify the distance in
|
||||
pixels between sibling components and the snapping lines.
|
||||
|
||||
\image qtquick-designer-options.png "Qt Quick Designer options"
|
||||
|
||||
The following image shows the snapping lines (1) when
|
||||
\uicontrol {Parent item padding} is set to 5 pixels.
|
||||
\uicontrol {Parent component padding} is set to 5 pixels.
|
||||
|
||||
\image qmldesigner-snap-margins.png "Snapping lines on canvas"
|
||||
|
||||
@@ -220,9 +220,9 @@
|
||||
\image qmldesigner-preview-size.png "Component width and height"
|
||||
|
||||
To set the initial size of the root component, select \uicontrol Tools >
|
||||
\uicontrol Options > \uicontrol {Qt Quick} > \uicontrol {Qt Quick Designer} and
|
||||
specify the component width and height in the \uicontrol {Root Item Init Size}
|
||||
group.
|
||||
\uicontrol Options > \uicontrol {Qt Quick} > \uicontrol {Qt Quick Designer}
|
||||
and specify the component width and height in the
|
||||
\uicontrol {Root Component Init Size} group.
|
||||
|
||||
\section1 Specifying Canvas Size
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Creator documentation.
|
||||
@@ -46,12 +46,11 @@
|
||||
the contained components, and therefore, the modules must provide extra type
|
||||
information for code completion and the semantic checks to work correctly.
|
||||
|
||||
To create a QML module and make it appear in the \uicontrol Library view in
|
||||
the Design mode:
|
||||
To create a QML module and make it appear in the \l Library view:
|
||||
|
||||
\list 1
|
||||
|
||||
\li Create custom QML controls and place all the \c .qml files in a
|
||||
\li Create custom components and place all the \c .qml files in a
|
||||
directory dedicated to your module. For example:
|
||||
\c {imports\asset_imports}.
|
||||
|
||||
@@ -72,8 +71,8 @@
|
||||
|
||||
\li Create a \c .metainfo file for your module and place it in the
|
||||
\c designer directory. Meta information is needed to display the
|
||||
components in the \uicontrol {QML Types} tab in \uicontrol
|
||||
Library. Use a metainfo file delivered with Qt, such as
|
||||
components in the \uicontrol Components tab in \uicontrol Library.
|
||||
Use a metainfo file delivered with Qt, such as
|
||||
\c qtquickcontrols2.metainfo, as an example.
|
||||
|
||||
\if defined(qtcreator)
|
||||
@@ -91,9 +90,9 @@
|
||||
|
||||
\endlist
|
||||
|
||||
Your module should now appear in the \uicontrol {QML Imports} tab in
|
||||
\uicontrol Library in the Design mode. Your components should appear in the
|
||||
\uicontrol {QML Types} tab if a valid \c .metainfo file is in place.
|
||||
Your module should now appear in the \uicontrol Components tab in
|
||||
\uicontrol Library. Your components should appear in a subsection of
|
||||
the \uicontrol Components tab if a valid \c .metainfo file is in place.
|
||||
|
||||
\if defined(qtcreator)
|
||||
\section1 Registering QML Types
|
||||
@@ -116,7 +115,7 @@
|
||||
|
||||
Ideally, QML modules have a \c{plugins.qmltypes} file in the same directory
|
||||
as the \c qmldir file. The \c qmltypes file contains a description of the
|
||||
types exported by the module's plugins and is loaded by \QC when the
|
||||
components exported by the module's plugins and is loaded by \QC when the
|
||||
module is imported.
|
||||
|
||||
For Qt 4.8 and later, one or more \c qmltypes files can be listed in the
|
||||
@@ -131,7 +130,7 @@
|
||||
Once you have obtained \c qmlplugindump for the Qt version the QML module's
|
||||
plugins were compiled with, run the following command to load My.Module
|
||||
version 1.0 from \c{/import/path/my/module} including all its plugins and
|
||||
output a description of the plugins' types to
|
||||
output a description of the plugins' components to
|
||||
\c{/import/path/my/module/plugins.qmltypes}:
|
||||
|
||||
\code
|
||||
@@ -175,7 +174,7 @@
|
||||
\section1 Running QML Modules in Design Mode
|
||||
|
||||
A QML emulation layer (also called QML Puppet) is used in the Design mode to
|
||||
render and preview images and to collect data. To be able to render custom types
|
||||
render and preview images and to collect data. To be able to render custom components
|
||||
correctly from QML modules, the emulation layer must be built with the same
|
||||
Qt version and compiler as the QML modules.
|
||||
|
||||
|
@@ -38,9 +38,9 @@
|
||||
\image qmldesigner-navigator.png "Navigator with component preview"
|
||||
|
||||
You can select components in the \uicontrol Navigator view to edit their
|
||||
properties in the \uicontrol Properties view. Components can access the
|
||||
properties in the \l Properties view. Components can access the
|
||||
properties of their parent component. To select components in the
|
||||
\uicontrol {Form Editor} view, right-click a component, and select another
|
||||
\l {Form Editor} view, right-click a component, and select another
|
||||
component in the \uicontrol Selection submenu.
|
||||
|
||||
Typically, child components are located within the parent component in
|
||||
@@ -123,7 +123,8 @@
|
||||
|
||||
To hide invisible components in \uicontrol Navigator, click
|
||||
\inlineimage filtericon.png
|
||||
(\uicontrol {Filter Tree}) and select \uicontrol {Show only visible items}.
|
||||
(\uicontrol {Filter Tree}) and select
|
||||
\uicontrol {Show Only Visible Components}.
|
||||
|
||||
\section1 Locking Components
|
||||
|
||||
@@ -142,14 +143,14 @@
|
||||
\image qtquick-designer-navigator-lock.gif "Locking components in Navigator"
|
||||
|
||||
You cannot select locked components in \uicontrol {Form Editor} or
|
||||
\uicontrol {3D Editor} nor access their properties in
|
||||
\l {3D Editor} nor access their properties in
|
||||
\uicontrol Properties.
|
||||
|
||||
If you attempt to \l{Adding States}{remove a state} that changes the
|
||||
properties of a locked component, you are prompted to confirm the removal.
|
||||
|
||||
If you have \l{Editing Animation Curves}{added easing curves} to keyframe
|
||||
animations, you can lock and unlock them in the \uicontrol {Curve Editor}
|
||||
animations, you can lock and unlock them in the \l {Curve Editor}
|
||||
view. If you lock the components that contain the easing curves, the lock
|
||||
status is synchronized between \uicontrol Navigator and
|
||||
\uicontrol {Curve Editor}.
|
||||
@@ -164,7 +165,7 @@
|
||||
components in \uicontrol {Form Editor}. To list the components in the order
|
||||
in which they appear in the file, as some other tools do, click
|
||||
\inlineimage filtericon.png
|
||||
(\uicontrol {Filter Tree}), and select \uicontrol {Reverse item order}.
|
||||
(\uicontrol {Filter Tree}), and select \uicontrol {Reverse Component Order}.
|
||||
|
||||
To move a component to the top or bottom of the tree within its parent,
|
||||
right-click it in \uicontrol Navigator or \uicontrol {Form Editor}
|
||||
@@ -218,7 +219,7 @@
|
||||
right-click an instance of a component and then select
|
||||
\uicontrol {Go into Component} in the context menu or
|
||||
press \key F2.
|
||||
\li In \uicontrol Properties, select \uicontrol {Edit Master Component}.
|
||||
\li In \uicontrol Properties, select \uicontrol {Edit Base Component}.
|
||||
\endlist
|
||||
|
||||
The component hierarchy is displayed as a bread crumb path, where you can
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Design Studio documentation.
|
||||
@@ -113,7 +113,8 @@
|
||||
\section1 Using Timelines to Animate Transitions
|
||||
|
||||
The Coffee Machine application screens for choosing coffee, empty cup, and
|
||||
brewing each use custom QML types specified in separate QML files.
|
||||
brewing each use custom components specified in separate component files
|
||||
(.qml).
|
||||
|
||||
We use the \uicontrol Timeline view to animate the transitions between
|
||||
the screens during the application flow in \e {ApplicationFlow.ui.qml}.
|
||||
@@ -122,7 +123,7 @@
|
||||
|
||||
Our viewport contains 200 frames, so we select the
|
||||
\inlineimage plus.png "Plus button"
|
||||
button to add a 1200-frame timeline to the root element.
|
||||
button to add a 1200-frame timeline to the root component.
|
||||
We use the default values for all other fields.
|
||||
|
||||
To start recording the transition from the startup screen to the coffee
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Design Studio documentation.
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
Our viewport contains 1000 frames, so we select the
|
||||
\inlineimage plus.png "Plus button"
|
||||
button to add a 5000-frame timeline to the root element.
|
||||
button to add a 5000-frame timeline to the root component.
|
||||
We use the default values for all other fields.
|
||||
|
||||
To start recording the transitions between the Standard screen and the
|
||||
@@ -79,10 +79,10 @@
|
||||
new timeline appears in the view.
|
||||
|
||||
When we select \e tripScreen in the \uicontrol Navigator, we can see the
|
||||
properties of the TripScreen QML type that we can animate in the
|
||||
properties of the TripScreen component that we can animate in the
|
||||
\uicontrol Properties view.
|
||||
|
||||
\image ebikedesign-trip-properties.png "Properties view of the Trip type"
|
||||
\image ebikedesign-trip-properties.png "Properties view of the Trip component"
|
||||
|
||||
We set values for the \uicontrol Visibility,
|
||||
\uicontrol Opacity, \uicontrol currentFrame, and \uicontrol Scale properties
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Design Studio documentation.
|
||||
@@ -38,12 +38,12 @@
|
||||
\e{Log In UI - Part 1} is the first in a series of tutorials that build on
|
||||
each other to illustrate how to use \QDS to create a simple UI with some
|
||||
basic UI components, such as pages, buttons, and fields. Part 1 describes
|
||||
how to use the \QDS wizard templates to create a Qt Quick project and a
|
||||
how to use the \QDS wizard templates to create a project and a
|
||||
button UI control, and how to modify the files generated by the wizard
|
||||
templates to design your own UI.
|
||||
|
||||
The \e {Learn Qt Quick} sections provide additional information about the
|
||||
tasks performed by the wizards and about the basics of QML and Qt Quick.
|
||||
The \e {Learn More} sections provide additional information about the
|
||||
tasks performed by the wizards and about other basic tasks and concepts.
|
||||
|
||||
\section1 Creating the UI Project
|
||||
|
||||
@@ -78,8 +78,8 @@
|
||||
|
||||
\image loginui1-project.png "Log In UI project in the Design mode"
|
||||
|
||||
The UI is built using a \l{basic-rectangle}{Rectangle} QML type that forms
|
||||
the background and a \l Text type that displays some text.
|
||||
The UI is built using a \l{basic-rectangle}{Rectangle} component that forms
|
||||
the background and a \l Text component that displays some text.
|
||||
|
||||
\note The visibility of views depends on the selected workspace,
|
||||
so your \QDS might look somewhat different from the above image.
|
||||
@@ -184,7 +184,7 @@
|
||||
\li Drag and drop the Qt logo from the \uicontrol Assets tab of
|
||||
\uicontrol Library to the top-left corner of the rectangle.
|
||||
\image loginui1-library-assets.png "Library view Assets tab"
|
||||
\QDS automatically creates a component of the \l{Images}{Image} type
|
||||
\QDS automatically creates a component of the \l{Images}{Image} component
|
||||
for you with the path to the image file set as the value of
|
||||
the \uicontrol Source field in \uicontrol Properties.
|
||||
\image loginui1-image-properties.png "Image properties"
|
||||
@@ -198,15 +198,15 @@
|
||||
|
||||
\image loginui1-main-page.png "Modified UI in the Design mode"
|
||||
|
||||
\section2 Learn Qt Quick - QML Types
|
||||
\section2 Learn More - Components
|
||||
|
||||
The \l {Qt Quick} module provides all the basic types necessary for creating
|
||||
UIs. It provides a visual canvas and includes types for creating and
|
||||
animating visual components, receiving user input, and creating data models
|
||||
and views.
|
||||
\QDS provides preset \l{glossary-component}{components} for creating
|
||||
UIs, including components for creating and animating visual components,
|
||||
receiving user input, and creating data models and views.
|
||||
|
||||
To be able to use the functionality of Qt Quick types, the wizard template
|
||||
adds the following \e import statements to the QML files that it creates:
|
||||
To be able to use the functionality of preset components, the wizard template
|
||||
adds the following \e import statements to the UI files (.ui.qml) that it
|
||||
creates:
|
||||
|
||||
\quotefromfile loginui1/Screen01.ui.qml
|
||||
\skipto import
|
||||
@@ -214,72 +214,72 @@
|
||||
|
||||
You can view the import statements in the \uicontrol {Text Editor} view.
|
||||
|
||||
The \uicontrol Library view lists the QML types in each Qt module that are
|
||||
supported by \QDS. You can use the basic types to create your own QML
|
||||
types, and they will be listed under \uicontrol {My QML Components}.
|
||||
This section is only visible if you have created custom QML components.
|
||||
The \l Library view lists the components in each module that are
|
||||
supported by \QDS. You can use the basic components to create your own
|
||||
components, and they will be listed under \uicontrol {My Components}.
|
||||
This section is only visible if you have created custom components.
|
||||
|
||||
The \l {basic-rectangle}{Rectangle}, \l Text, and \l {Images}{Image} types
|
||||
used in this tutorial are based on the \l Item type. It is the base type for
|
||||
all visual elements, with implementation of basic functions and properties,
|
||||
such as type name, ID, position, size, and visibility.
|
||||
The \l {basic-rectangle}{Rectangle}, \l Text, and \l {Images}{Image}
|
||||
components used in this tutorial are based on the \l Item component.
|
||||
It is the base component for all visual elements, with implementation
|
||||
of basic functions and properties, such as component name, ID, position,
|
||||
size, and visibility.
|
||||
|
||||
For more information, see \l{Use Case - Visual Elements In QML}. For
|
||||
descriptions of all QML types, see \l{All QML Types} in the Qt reference
|
||||
descriptions of all components, see \l{All QML Types} in the Qt reference
|
||||
documentation.
|
||||
|
||||
\section3 Regtangle Properties
|
||||
|
||||
The basic \l {basic-rectangle}{Rectangle} QML type is used for drawing shapes
|
||||
with four sides and four corners. You can fill rectangles either with a
|
||||
solid fill color or a gradient. You can specify the border color separately.
|
||||
The default \l {basic-rectangle}{Rectangle} component is used for drawing
|
||||
shapes with four sides and four corners. You can fill rectangles either with
|
||||
a solid fill color or a gradient. You can specify the border color separately.
|
||||
By setting the value of the radius property, you can create shapes with
|
||||
rounded corners.
|
||||
|
||||
If you want to specify the radius of each corner separately, you can use the
|
||||
\l{studio-rectangle}{Rectangle} type from the Qt Quick Studio Components
|
||||
module instead of the basic rectangle type. It is available in the
|
||||
\uicontrol {Studio Components} tab of \uicontrol Library.
|
||||
\l{studio-rectangle}{Rectangle} component from the Studio Components
|
||||
module instead of the basic rectangle component. It is available in the
|
||||
\uicontrol {Studio Components} tab of \l Library > \uicontrol Components.
|
||||
|
||||
\section3 Text Properties
|
||||
|
||||
The \l Text type is used for adding static text to the UI, such as titles
|
||||
and labels. You can select the font to use and specify extensive properties
|
||||
for each text item, such as size in points or pixels, weight, style, and
|
||||
spacing.
|
||||
The \l Text component is used for adding static text to the UI, such as
|
||||
titles and labels. You can select the font to use and specify extensive
|
||||
properties for each text component, such as size in points or pixels,
|
||||
weight, style, and spacing.
|
||||
|
||||
To display custom fonts in the list of available fonts in
|
||||
\uicontrol Properties, add them in the \uicontrol Assets
|
||||
tab of \uicontrol Library.
|
||||
To display custom fonts in the list of available fonts in \l Properties,
|
||||
add them in the \uicontrol Assets tab of \uicontrol Library.
|
||||
|
||||
If you want to create a label with a background, use the \l Label type
|
||||
from the Qt Quick Controls module instead of the Text type.
|
||||
If you want to create a label with a background, use the \l Label component
|
||||
from the Qt Quick Controls module instead of the Text component.
|
||||
|
||||
\section3 Image Properties
|
||||
|
||||
The \l {Images}{Image} type is used for adding images to the UI in several
|
||||
The \l {Images}{Image} component is used for adding images to the UI in several
|
||||
supported formats, including bitmap formats such as PNG and JPEG and vector
|
||||
graphics formats such as SVG. You must add the images to your project in the
|
||||
\uicontrol Assets tab of \uicontrol Library to be able to use them in
|
||||
designs.
|
||||
|
||||
If you need to display animated images, use the \l {Animated Image} type,
|
||||
also available in the \uicontrol {Qt Quick - Basic}
|
||||
tab of \uicontrol Library.
|
||||
If you need to display animated images, use the \l {Animated Image}
|
||||
component, also available in \uicontrol Library > \uicontrol Components >
|
||||
\uicontrol {Default Components} > \uicontrol Basic.
|
||||
|
||||
\section1 Creating a Push Button
|
||||
|
||||
You can use another wizard template to create a push button and to add it to
|
||||
the project. The wizard template creates a reusable button component that
|
||||
appears under \uicontrol {My QML Components} in \uicontrol Library. You can
|
||||
drag and drop it to \uicontrol {Form Editor} and modify its properties
|
||||
in \uicontrol Properties to change its appearance and functionality.
|
||||
appears under \uicontrol {My Components} in \uicontrol Library > Components.
|
||||
You can drag and drop it to \l {Form Editor} and modify its properties
|
||||
in \l Properties to change its appearance and functionality.
|
||||
|
||||
If you find that you cannot use the wizard template nor the ready-made
|
||||
button controls available in the \uicontrol {Qt Quick Controls 2} tab
|
||||
in \uicontrol Library to create the kind of push button that you want,
|
||||
you can create your button from scratch using basic QML types. For more
|
||||
information, see \l {Creating Buttons} and
|
||||
button controls available in the \uicontrol {Qt Quick Controls} tab
|
||||
in \uicontrol Library > \uicontrol Components to create the kind of push
|
||||
button that you want, you can create your button from scratch using default
|
||||
components. For more information, see \l {Creating Buttons} and
|
||||
\l {Creating Scalable Buttons and Borders}.
|
||||
|
||||
To create a push button by using the wizard template:
|
||||
@@ -289,7 +289,7 @@
|
||||
\uicontrol {Files and Classes} > \uicontrol {Qt Quick Controls} >
|
||||
\uicontrol {Custom Button} > \uicontrol Choose.
|
||||
\li In the \uicontrol {Component name} field, enter a name for your
|
||||
button type: \e {PushButton}.
|
||||
button component: \e {PushButton}.
|
||||
\li Select \uicontrol Finish (or \uicontrol Done on \macos) to create
|
||||
the button.
|
||||
\endlist
|
||||
@@ -298,16 +298,16 @@
|
||||
|
||||
\image loginui1-button.png "Button in the Design mode."
|
||||
|
||||
\section2 Learn Qt Quick - Qt Quick Controls
|
||||
\section2 Learn More - UI Controls
|
||||
|
||||
The \e {Custom Button} wizard template creates a \l {Button}
|
||||
QML type that belongs to the \l {Qt Quick Controls 2} module. It is a
|
||||
component that belongs to the \l {Qt Quick Controls} module. It is a
|
||||
push-button control that can be pushed or clicked by the user. Buttons
|
||||
are normally used to perform an action or to answer a question. The Button
|
||||
type inherits properties and functionality from another QML type. These
|
||||
component inherits properties and functionality from another component. These
|
||||
enable you to set text, display an icon, react to mouse clicks, and so on.
|
||||
|
||||
To be able to use the functionality of the Button type, the wizard template
|
||||
To be able to use the functionality of the Button component, the wizard template
|
||||
adds the following \e import statements to the \e PushButton.ui.qml file:
|
||||
|
||||
\quotefromfile loginui1/PushButton.ui.qml
|
||||
@@ -315,9 +315,9 @@
|
||||
\printuntil loginui1
|
||||
|
||||
The \l {Qt Quick Templates 2} module provides the functionality of the
|
||||
Button type. The module is imported as \e T, and the alias is added to
|
||||
the Button type definition to indicate that the Button type from the
|
||||
Qt Quick Controls 2 module is used, instead of some other type with the
|
||||
Button component. The module is imported as \e T, and the alias is added to
|
||||
the Button component definition to indicate that the Button component from the
|
||||
Qt Quick Controls module is used, instead of some other component with the
|
||||
same name.
|
||||
|
||||
\printuntil text
|
||||
@@ -331,7 +331,7 @@
|
||||
|
||||
\section1 Styling the Button
|
||||
|
||||
You can now modify the properties of the PushButton type to your liking. To
|
||||
You can now modify the properties of the PushButton component to your liking. To
|
||||
make the changes apply to all the button instances, you must make them in
|
||||
the \e PushButton.ui.qml file.
|
||||
|
||||
@@ -362,7 +362,7 @@
|
||||
rounded corners.
|
||||
\li In the \uicontrol States view, select the \e down state and modify
|
||||
the background and border color as above.
|
||||
\li Select the text item in \uicontrol Navigator to display its
|
||||
\li Select the text component in \uicontrol Navigator to display its
|
||||
properties in \uicontrol Properties.
|
||||
\li In the \uicontrol {Text Color} field, select \uicontrol Actions >
|
||||
\uicontrol Reset to reset the text color to the default color,
|
||||
@@ -379,26 +379,25 @@
|
||||
|
||||
\image loginui1-button-styled.png "Modified button in the Form Editor"
|
||||
|
||||
\section2 Learn Qt Quick - Property Bindings
|
||||
\section2 Learn More - Property Bindings
|
||||
|
||||
An object's property can be assigned a static value which stays constant
|
||||
A component's property can be assigned a static value which stays constant
|
||||
until it is explicitly assigned a new value. In this tutorial, the color
|
||||
values you set in \uicontrol {Binding Editor} are static.
|
||||
|
||||
However, to make the fullest use of QML and its built-in support for dynamic
|
||||
object behavior, you can use property bindings that specify relationships
|
||||
between different object properties. When a property's dependencies change
|
||||
However, to make the fullest use of the built-in support for dynamic
|
||||
component behavior, you can use property bindings that specify relationships
|
||||
between different component properties. When a property's dependencies change
|
||||
in value, the property is automatically updated according to the specified
|
||||
relationship.
|
||||
|
||||
Behind the scenes, the QML engine monitors the property's dependencies
|
||||
(that is, the variables in the binding expression). When it detects a
|
||||
change, it re-evaluates the binding expression and applies the new result
|
||||
to the property.
|
||||
Behind the scenes, the property's dependencies are monitored (that is, the
|
||||
variables in the binding expression). When a change is detected, the binding
|
||||
expression is re-evaluated and the new result is applied to the property.
|
||||
|
||||
For more information, see \l {Property Binding}.
|
||||
|
||||
Next, you will use the \e PushButton type in the main UI QML file,
|
||||
Next, you will use the \e PushButton component in the main UI file,
|
||||
\e Screen01.ui.qml to add two instances of the button to the UI
|
||||
and to modify their text labels.
|
||||
|
||||
@@ -409,9 +408,9 @@
|
||||
\list 1
|
||||
\li Double-click \e Screen01.ui.qml in \uicontrol Projects
|
||||
to open it in \uicontrol {Form Editor}.
|
||||
\li Drag and drop two instances of the PushButton type from
|
||||
\li Drag and drop two instances of the PushButton component from
|
||||
\uicontrol Library to \uicontrol {Form Editor}.
|
||||
\image loginui1-library.png "My QML Components tab of Library view"
|
||||
\image loginui1-library.png "My Components tab of Library view"
|
||||
\li Select one of the buttons in \uicontrol Navigator to modify
|
||||
its id and text label in \uicontrol Properties.
|
||||
\li In the \uicontrol Id field, enter \e loginButton.
|
||||
@@ -422,7 +421,7 @@
|
||||
\li Select the other button, and change its id to \e registerButton
|
||||
and text label to \e {Create Account}. Again, mark the text
|
||||
translatable.
|
||||
\li When an element is selected, selection handles are displayed in its
|
||||
\li When a component is selected, selection handles are displayed in its
|
||||
corners and on its sides. Use the selection handles to resize the
|
||||
buttons so that the text fits comfortably on the button background.
|
||||
In this tutorial, the button width is set to 120 pixels.
|
||||
@@ -440,10 +439,10 @@
|
||||
|
||||
\image loginui1-ready.png "The finished UI in the Design mode"
|
||||
|
||||
\section2 Learn Qt Quick - QML Ids
|
||||
\section2 Learn More - Component IDs
|
||||
|
||||
Each QML type and each instance of a QML type has an \e id that uniquely
|
||||
identifies it and enables other objects' properties to be bound to it. An
|
||||
Each component and each instance of a component has an \e id that uniquely
|
||||
identifies it and enables other components' properties to be bound to it. An
|
||||
id must be unique, it must begin with a lower-case letter or an underscore
|
||||
character, and it can contain only letters, numbers, and underscore
|
||||
characters.
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Design Studio documentation.
|
||||
@@ -48,8 +48,8 @@
|
||||
|
||||
These instructions build on \l {Log In UI - Part 1}.
|
||||
|
||||
The \e {Learn Qt Quick} sections provide additional information about the
|
||||
features of QML and Qt Quick that are relevant to the task at hand.
|
||||
The \e {Learn More} sections provide additional information about the
|
||||
task at hand.
|
||||
|
||||
\section1 Anchoring UI Components
|
||||
|
||||
@@ -91,23 +91,23 @@
|
||||
|
||||
\image loginui2-loginpage.png "Login page in the Design mode"
|
||||
|
||||
\section2 Learn Qt Quick - Anchors
|
||||
\section2 Learn More - Anchors
|
||||
|
||||
In an anchor-based layout, each QML type can be thought of as having a set
|
||||
In an anchor-based layout, each component can be thought of as having a set
|
||||
of invisible \e anchor lines: top, bottom, left, right, fill, horizontal
|
||||
center, vertical center, and baseline.
|
||||
|
||||
Anchors enable placing an object either adjacent to or inside of another
|
||||
object, by attaching one or more of the object's anchor lines to the anchor
|
||||
lines of the other object. If an object changes, the objects that are
|
||||
anchored to it will adjust automatically to maintain the anchoring.
|
||||
Anchors enable placing a component either adjacent to or inside of another
|
||||
component, by attaching one or more of the component's anchor lines to the
|
||||
anchor lines of the other component. If a component changes, the components
|
||||
that are anchored to it will adjust automatically to maintain the anchoring.
|
||||
|
||||
For more information, see \l{Positioning with Anchors}.
|
||||
|
||||
\section1 Using Column Positioners
|
||||
|
||||
You will now add two entry fields to the page and position them in a column
|
||||
to learn another method of \l{Using Positioners}{positioning items}.
|
||||
to learn another method of \l{Using Positioners}{positioning components}.
|
||||
Next, you will position the push buttons on the page in another column.
|
||||
Finally, you will anchor the columns to the page to enable their positions
|
||||
to change when the screen size changes.
|
||||
@@ -115,15 +115,15 @@
|
||||
To add entry fields to the page:
|
||||
|
||||
\list 1
|
||||
\li In \uicontrol Library > \uicontrol {QML Types}, select the
|
||||
\uicontrol {+ \QtQuick.Controls} button to display the
|
||||
\l {Qt Quick Controls 2} types in the tab:
|
||||
\li In \l Library > \uicontrol Components, select the
|
||||
\inlineimage plus.png
|
||||
button to add the \l {Qt Quick Controls} module to the project:
|
||||
\image loginui2-imports.png
|
||||
\li Drag and drop two instances of the \uicontrol {Text Field}
|
||||
type from the \uicontrol {Qt Quick Controls 2} tab to
|
||||
\uicontrol {Form Editor}.
|
||||
\li Select one of the text fields in \uicontrol Navigator, and
|
||||
change its id to \e usernameField in \uicontrol Properties.
|
||||
component from the \uicontrol {Qt Quick Controls} tab to
|
||||
\l {Form Editor}.
|
||||
\li Select one of the text fields in \l Navigator, and
|
||||
change its id to \e usernameField in \l Properties.
|
||||
\li In the \uicontrol Geometry group, \uicontrol Size field,
|
||||
make the field wide enough to accommodate long user names
|
||||
by setting its width to \e 300 pixels.
|
||||
@@ -136,7 +136,7 @@
|
||||
and width to \e 300 pixels.
|
||||
\endlist
|
||||
|
||||
The Text Field type has additional properties that you can use to change
|
||||
The Text Field component has additional properties that you can use to change
|
||||
its appearance. For example, you can change the color, font, alignment, or
|
||||
word and letter spacing of the placeholder text.
|
||||
|
||||
@@ -187,22 +187,18 @@
|
||||
|
||||
\image loginui2-loginpage-ready.png "Login page in the Design mode"
|
||||
|
||||
\section1 Learn Qt Quick - Positioners
|
||||
\section1 Learn More - Positioners
|
||||
|
||||
Qt Quick provides built-in positioner items. For many use cases, the best
|
||||
positioner to use is a simple grid, row, or column, and Qt Quick provides
|
||||
items that will position children in these formations in the most efficient
|
||||
manner possible. For more information about using pre-defined positioners,
|
||||
see \l {Item Positioners}.
|
||||
For many use cases, the best positioner to use is a simple grid, row, or
|
||||
column, and \QDS provides components that will position children in these
|
||||
formations in the most efficient manner possible. For more information
|
||||
about using preset positioners, see \l {Using Positioners}.
|
||||
|
||||
For more complicated UI designs, you can use QML types from the
|
||||
\l {Qt Quick Layouts Overview}{Qt Quick Layouts module}.
|
||||
For more complicated UI designs, you can use components from the
|
||||
\l {Using Layouts}{Qt Quick Layouts module}.
|
||||
|
||||
\section1 Next Steps
|
||||
|
||||
To learn more about positioning items in \QDS, see
|
||||
\l{Positioning Items}.
|
||||
|
||||
To learn how to add a second page and move to it from the main page, see
|
||||
the next tutorial in the series, \l {Log In UI - Part 3}.
|
||||
*/
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Design Studio documentation.
|
||||
@@ -42,8 +42,8 @@
|
||||
first page, users can enter a username and password to log in. On the
|
||||
second page, they can register if they do not already have an account.
|
||||
|
||||
Because the second page will contain most of the same UI elements as the
|
||||
login page, you will use \e states to show and hide UI elements as necessary
|
||||
Because the second page will contain most of the same UI components as the
|
||||
login page, you will use \e states to show and hide UI components as necessary
|
||||
when a user selects the \uicontrol {Create Account} button.
|
||||
|
||||
These instructions build on:
|
||||
@@ -53,8 +53,8 @@
|
||||
\li \l {Log In UI - Part 2}
|
||||
\endlist
|
||||
|
||||
The \e {Learn Qt Quick} sections provide additional information about the
|
||||
features of QML and Qt Quick that are relevant to the task at hand.
|
||||
The \e {Learn More} sections provide additional information relevant to the
|
||||
task at hand.
|
||||
|
||||
\section1 Adding UI Components
|
||||
|
||||
@@ -71,18 +71,18 @@
|
||||
To add the text field and a back button needed on the registration page:
|
||||
|
||||
\list 1
|
||||
\li Open \e {Screen01.ui.qml} in \uicontrol {Form Editor} for editing.
|
||||
\li Drag and drop a \uicontrol {Text Field} from \uicontrol Library
|
||||
> \uicontrol {QML Types} > \uicontrol {Qt Quick Controls 2} to
|
||||
\e fieldColumn in \uicontrol Navigator.
|
||||
\li In \uicontrol Properties, change the id of the text field to
|
||||
\li Open \e {Screen01.ui.qml} in \l {Form Editor} for editing.
|
||||
\li Drag and drop a \uicontrol {Text Field} from \l Library
|
||||
> \uicontrol Components > \uicontrol {Qt Quick Controls} to
|
||||
\e fieldColumn in \l Navigator.
|
||||
\li In \l Properties, change the ID of the text field to
|
||||
\e verifyPasswordField.
|
||||
\li In the \uicontrol Geometry group, \uicontrol Size field, set the
|
||||
width of the field to \e 300 pixels to match the size of the
|
||||
existing fields.
|
||||
\li In the \uicontrol Placeholder field, set the placeholder text to
|
||||
\e {Verify password} and mark the text translatable.
|
||||
\li Drag and drop a PushButton type from \uicontrol Library >
|
||||
\li Drag and drop a PushButton component from \uicontrol Library >
|
||||
\uicontrol {My QML Components} to their parent rectangle in
|
||||
\uicontrol Navigator.
|
||||
\li Select the button in \uicontrol Navigator and change its id to
|
||||
@@ -145,32 +145,28 @@
|
||||
|
||||
\image loginui3-states.png "States view"
|
||||
|
||||
\section2 Learn Qt Quick - States
|
||||
\section2 Learn More - States
|
||||
|
||||
In Qt Quick, the \e state of a particular visual item is the set of
|
||||
information which describes how and where the individual component
|
||||
parts of the visual item are displayed within it, and all the data
|
||||
associated with that state. Most visual items in a UI will have a
|
||||
limited number of states, each with well-defined properties.
|
||||
The \l{Adding States}{state} of a particular visual component is the set of
|
||||
information which describes how and where the individual parts of the visual
|
||||
component are displayed within it, and all the data associated with that
|
||||
state. Most visual components in a UI will have a limited number of states,
|
||||
each with well-defined properties.
|
||||
|
||||
For example, an element in a list may be either selected or not, and if
|
||||
For example, a list item may be either selected or not, and if
|
||||
selected, it may either be the currently active single selection or it
|
||||
may be part of a selection group. Each of those states may have certain
|
||||
associated visual appearance (neutral, highlighted, expanded, and so on).
|
||||
|
||||
Qt Quick provides a \l State type with properties which define its
|
||||
semantics and can be used to trigger behavior or animations. UI components
|
||||
typically have a state property and a default state. The default state
|
||||
contains all of an item's initial property values, and is therefore useful
|
||||
for managing property values before state changes.
|
||||
Youn can apply states to trigger behavior or animations. UI components
|
||||
typically have a default state that contains all of a component's initial
|
||||
property values and is therefore useful for managing property values before
|
||||
state changes.
|
||||
|
||||
UI components can specify additional states by adding new State objects to
|
||||
the state property. Each state within a component has a unique name. To
|
||||
change the current state of an item, the state property is set to the name
|
||||
of the state. State changes can be bound to conditions by using the \c when
|
||||
property.
|
||||
|
||||
For more information, see \l{Qt Quick States}.
|
||||
You can specify additional states by adding new states. Each state within a
|
||||
component has a unique name. To change the current state of an component,
|
||||
the state property is set to the name of the state. State changes can be
|
||||
bound to conditions by using the \c when property.
|
||||
|
||||
Next, you will create connections to specify that clicking the
|
||||
\uicontrol {Create Account} button on the login page triggers a
|
||||
@@ -180,12 +176,12 @@
|
||||
|
||||
\section1 Connecting Buttons to States
|
||||
|
||||
QML types have predefined signals that are emitted when users interact
|
||||
with the UI. The \e PushButton QML type contains a \l{Mouse Area} type
|
||||
Components have predefined signals that are emitted when users interact
|
||||
with the UI. The \e PushButton component contains a \l{Mouse Area} component
|
||||
that has a \e clicked signal. The signal is emitted whenever the mouse
|
||||
is clicked within the area.
|
||||
|
||||
You will now use the \uicontrol Connections view to
|
||||
You will now use the \l Connections view to
|
||||
\l{Connecting Components to Signals}{connect} the clicked signal of
|
||||
\e registerButton to \e registerState and that of \e backButton
|
||||
to \e loginState:
|
||||
@@ -217,7 +213,7 @@
|
||||
\image loginui3.gif "Moving between login page and registration page"
|
||||
|
||||
|
||||
\section2 Learn Qt Quick - Signal and Event Handlers
|
||||
\section2 Learn More - Signal and Event Handlers
|
||||
|
||||
UI components need to communicate with each other. For example, a button
|
||||
needs to know that the user has clicked on it. In response, the button may
|
||||
@@ -233,8 +229,8 @@
|
||||
|
||||
\section1 Next Steps
|
||||
|
||||
For a more complicated UI, you would typically use QML types that specify
|
||||
a view of items provided by a model, such as a \l ListView or \l StackView.
|
||||
For a more complicated UI, you would typically use components that specify
|
||||
a view of components provided by a model, such as a \l ListView or \l StackView.
|
||||
For more information, see \l{Using Data Models}.
|
||||
|
||||
To learn how to use a timeline to animate the transition between the login
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Design Studio documentation.
|
||||
@@ -53,8 +53,8 @@
|
||||
\li \l {Log In UI - Part 3}
|
||||
\endlist
|
||||
|
||||
The \e {Learn Qt Quick} sections provide additional information about the
|
||||
features of QML and Qt Quick that are relevant to the task at hand.
|
||||
The \e {Learn More} sections provide additional information relevant to the
|
||||
task at hand.
|
||||
|
||||
\section1 Animating UI Components
|
||||
|
||||
@@ -287,14 +287,14 @@
|
||||
|
||||
\image loginui4.gif "Moving between login page and registration page"
|
||||
|
||||
\section2 Learn Qt Quick - Timeline
|
||||
\section2 Learn More - Timeline
|
||||
|
||||
The Qt Quick Timeline module provides QML types to use timelines and
|
||||
The Qt Quick Timeline module provides components to use timelines and
|
||||
keyframes to animate component properties in UIs. Animating properties
|
||||
enables their values to move through intermediate values instead of
|
||||
immediately changing to the target value.
|
||||
|
||||
The Keyframe type specifies the value of a keyframe on a timeline. \QDS
|
||||
The Keyframe component specifies the value of a keyframe on a timeline. \QDS
|
||||
automatically adds keyframes between two keyframes, and sets their values
|
||||
evenly to create an appearance of movement or transformation.
|
||||
|
||||
@@ -302,14 +302,15 @@
|
||||
of the animation. For more information about easing curve types, see the
|
||||
documentation for \l [QML] {PropertyAnimation}{easing curves}.
|
||||
|
||||
To be able to use the functionality of Qt Quick Timeline types, \QDS adds
|
||||
the following \e import statement to the QML files where it uses the types:
|
||||
To be able to use the functionality of Timeline components, \QDS adds
|
||||
the following \e import statement to the UI files where it uses the
|
||||
components:
|
||||
|
||||
\quotefromfile loginui4/Screen01.ui.qml
|
||||
\skipto QtQuick.Timeline
|
||||
\printuntil 1.0
|
||||
|
||||
All the properties and functions of the QML types from this module are
|
||||
All the properties and functions of the components from this module are
|
||||
available in the Design mode, and therefore it is enough to learn how to
|
||||
use \uicontrol Timeline, as described in \l {Creating Animations}.
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Design Studio documentation.
|
||||
@@ -36,36 +36,36 @@
|
||||
|
||||
\section1 Creating the Progress Bar
|
||||
|
||||
First, we create an empty Qt Quick project, as described in
|
||||
\l {Creating Projects}. For the purposes of this example,
|
||||
we call the project \e progressbar.
|
||||
First, we create an empty project, as described in \l {Creating Projects}.
|
||||
For the purposes of this example, we call the project \e progressbar.
|
||||
|
||||
In this example, we use two overlapping rectangles and a text label to
|
||||
create the progress bar. For another example of a progress bar, see the
|
||||
\l {progress-bar-control}{Progress Bar} type in Qt Quick Controls.
|
||||
\l {progress-bar-control}{Progress Bar} component in Qt Quick Controls.
|
||||
|
||||
In the Design mode, we drag and drop a \uicontrol Rectangle from the
|
||||
\uicontrol Library to the \uicontrol {Form Editor} and modify its size
|
||||
to create the background for the progress bar. We change its id to
|
||||
\e background in the \uicontrol Properties view.
|
||||
In the Design mode, we drag and drop a \uicontrol Rectangle from
|
||||
\l Library to \l {Form Editor} and modify its size to create the
|
||||
background for the progress bar. We change its ID to \e background in
|
||||
\l Properties.
|
||||
|
||||
We want to be able to control the background rectangle and the text label
|
||||
that was added by the project wizard, so we will use an \uicontrol Item
|
||||
for that. We drag and drop the item from the \uicontrol Library to the
|
||||
\uicontrol {Form Editor} and change its id to \e root in the
|
||||
\uicontrol Properties view.
|
||||
component for that. We drag and drop the Item from \uicontrol Library to
|
||||
\uicontrol {Form Editor} and change its ID to \e root in
|
||||
\uicontrol Properties.
|
||||
|
||||
To make the background and text children of the item, we drag and drop them
|
||||
to the item in the \uicontrol Navigator view. This enables us to use the anchor
|
||||
To make the background and text children of the Item, we drag and drop them
|
||||
to the Item in \l Navigator. This enables us to use the anchor
|
||||
buttons in \uicontrol Properties > \uicontrol Layout to anchor them to their
|
||||
parent. We anchor the background to its parent on all edges, with a 30-pixel
|
||||
margin at the top to leave space for the text. We then anchor the text to
|
||||
the top of the item.
|
||||
the top of the Item.
|
||||
|
||||
\image progressbar-rectangle.png "Progress bar background in the Form Editor"
|
||||
|
||||
We now drag and drop another rectangle on top of the background rectangle in
|
||||
the \uicontrol Navigator and change its id to \e indicator in the properties.
|
||||
\uicontrol Navigator and change its ID to \e indicator in
|
||||
\uicontrol Properties.
|
||||
We then anchor the left, top, and bottom of the indicator to its parent with
|
||||
5-pixel margins. We leave the right side free, because its value needs to
|
||||
change for the animation.
|
||||
@@ -78,13 +78,13 @@
|
||||
The text label will indicate the progress in numbers and changing color,
|
||||
while the indicator rectangle will indicate it by getting wider and
|
||||
changing color. To animate the label and indicator, we'll add timelines
|
||||
in the \uicontrol Timeline view.
|
||||
in the \l Timeline view.
|
||||
|
||||
For more information about using the timeline, see \l {Creating Animations}.
|
||||
|
||||
\section2 Adding Color Animation
|
||||
|
||||
First, we add a color animation to the \e root item. We select the
|
||||
First, we add a color animation to the \e root component. We select the
|
||||
\inlineimage plus.png
|
||||
button to add a 100-frame timeline to root. You can use the default
|
||||
values for all other fields.
|
||||
@@ -99,8 +99,8 @@
|
||||
|
||||
We then set the color at frame 0 to green (\e {#8de98d}) in
|
||||
\uicontrol Properties > \uicontrol Text > \uicontrol {Text Color}.
|
||||
We can either pick a color from the color selector or use the
|
||||
\uicontrol {Set Binding} command in the \inlineimage submenu.png
|
||||
We can either \l{Picking Colors}{pick a color} from the color selector
|
||||
or use the \uicontrol {Set Binding} command in the \inlineimage submenu.png
|
||||
(\uicontrol Settings) menu to open the \uicontrol {Binding Editor}.
|
||||
|
||||
We then move the playhead to frame 50 and set the text color to red
|
||||
@@ -122,9 +122,9 @@
|
||||
\image progressbar-timeline-indicator.png "Indicator timeline"
|
||||
|
||||
We will now copy the color animation from the text label to the indicator.
|
||||
First, we right-click the text item in the \uicontrol Timeline view to open
|
||||
a context menu and select \uicontrol {Copy All Keyframes from Item} to copy
|
||||
the keyframe values we specified for the text label.
|
||||
First, we right-click the text component in the \uicontrol Timeline view to
|
||||
open a context menu and select \uicontrol {Copy All Keyframes from Item} to
|
||||
copy the keyframe values we specified for the text label.
|
||||
|
||||
Next, we select the indicator in the \uicontrol Navigator, and then select
|
||||
\uicontrol {Insert Keyframes for Item} to paste the keyframe
|
||||
@@ -138,11 +138,11 @@
|
||||
\section1 Creating a Reusable Component
|
||||
|
||||
We want the progress bar to be reusable, so we'll move it to a separate
|
||||
QML file. To make sure that the component will contain the timeline, we
|
||||
select \uicontrol {Filter Tree} in the \uicontrol Navigator, and then
|
||||
component file. To make sure that the component will contain the timeline,
|
||||
we select \uicontrol {Filter Tree} in \uicontrol Navigator and then
|
||||
deselect the \uicontrol {Show Only Visible Items} check box to show the
|
||||
timeline item in the \uicontrol Navigator. We then move the timeline item
|
||||
to \e root to have it moved as a part of the root component.
|
||||
timeline component in \uicontrol Navigator. We then move the timeline
|
||||
component to \e root to have it moved as a part of the root component.
|
||||
|
||||
Now we can right-click root to open a context menu and select
|
||||
\uicontrol {Move Component into Separate File}. We can see the
|
||||
@@ -152,28 +152,28 @@
|
||||
|
||||
\section1 Exporting Properties
|
||||
|
||||
We now select the root component in the \uicontrol Navigator, and
|
||||
We now select the root component in \uicontrol Navigator, and
|
||||
then select \uicontrol {Go into Component} in the context menu to
|
||||
open \e Root.qml in the \uicontrol {Form Editor}.
|
||||
open \e Root.qml in \uicontrol {Form Editor}.
|
||||
|
||||
We want to be able to use the keyframe value as the value of the text label,
|
||||
so we will export it as a property alias. We select \e timeline in the
|
||||
so we will export it as a property alias. We select \e timeline in
|
||||
\uicontrol Navigator and then \uicontrol Properties > \uicontrol Timeline >
|
||||
\uicontrol {Current frame} > \uicontrol Settings >
|
||||
\uicontrol {Export Property as Alias}.
|
||||
|
||||
\image progressbar-root-export-property.png "Export keyframe group as a property"
|
||||
|
||||
When we select \e root in the \uicontrol Navigator, we can see the
|
||||
\e timelineCurrentFrame property in \uicontrol Connections
|
||||
When we select \e root in \uicontrol Navigator, we can see the
|
||||
\e timelineCurrentFrame property in \uicontrol {Connections View}
|
||||
> \uicontrol Bindings. We double-click it to change its name
|
||||
to \e progress.
|
||||
|
||||
\image progressbar-bindings-progress.png "Connections view Bindings tab"
|
||||
\image progressbar-bindings-progress.png "Connections View Bindings tab"
|
||||
|
||||
We will bind some JavaScript to the value of the text label to turn
|
||||
it into a running number that reflects the number of the keyframe on the
|
||||
timeline. We select the text label in the \uicontrol Navigator, and then
|
||||
timeline. We select the text label in \uicontrol Navigator and then
|
||||
select \uicontrol Properties > \uicontrol Text > \uicontrol {Set Binding}
|
||||
to open the \uicontrol {Binding Editor}. We set
|
||||
\c {Math.round(root.progress)} as the value of the text label.
|
||||
@@ -190,7 +190,7 @@
|
||||
We can now add timelines for each progress bar instance, with different
|
||||
settings. We select the \inlineimage plus.png
|
||||
button to add a 4000-frame timeline to the first progress bar instance
|
||||
(\e root). We select the \uicontrol Continuous check box, so that the
|
||||
(\e root). We select the \uicontrol Continuous check box so that the
|
||||
animation will loop.
|
||||
|
||||
In \uicontrol Properties > \uicontrol Root, we can see the
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Design Studio documentation.
|
||||
@@ -50,17 +50,17 @@
|
||||
|
||||
The button can have the following states: checked, hover, pressed, and
|
||||
normal. We construct the button using different images for the button
|
||||
background, frame, and front. We then add states in the \uicontrol States
|
||||
view for each of the button states. In each state, we turn the visibility
|
||||
of the appropriate images on or off in the button properties, to change
|
||||
the appearance of the button.
|
||||
background, frame, and front. We then add \l{Adding States}{states} in
|
||||
the \l States view for each of the button states. In each state, we turn
|
||||
the visibility of the appropriate images on or off in the button properties,
|
||||
to change the appearance of the button.
|
||||
|
||||
\image sidemenu-custombutton-states.png "CustomButton QML type states"
|
||||
\image sidemenu-custombutton-states.png "CustomButton component states"
|
||||
|
||||
To change the button text when the button state changes, we bind the
|
||||
text property to the state of the button in the \uicontrol Properties view.
|
||||
When \e control is selected in the \uicontrol Navigator, we select the
|
||||
\uicontrol Settings menu for the \uicontrol Text property, and then select
|
||||
text property to the state of the button in the \l Properties view.
|
||||
When \e control is selected in the \l Navigator, we select the
|
||||
\uicontrol Actions menu for the \uicontrol Text property, and then select
|
||||
\uicontrol {Set Binding}. In the \uicontrol {Binding Editor}, we set the
|
||||
binding to \c control.state.
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
We want the buttons to be checkable, so we set the
|
||||
\l {AbstractButton::}{checkable} property to \c true.
|
||||
|
||||
We now select \uicontrol {Set when Condition} in the \uicontrol Settings menu
|
||||
We now select \uicontrol {Set when Condition} in the \uicontrol Actions menu
|
||||
for the states to bind the properties to the states using \c when
|
||||
conditions. First, we specify that a button instance enters the \e checked
|
||||
state when the \l {AbstractButton::}{checked} property is set to \c true.
|
||||
@@ -99,11 +99,10 @@
|
||||
\section1 Constructing a Menu Bar
|
||||
|
||||
We construct the menu bar in the \e {MainFile.ui.qml} file using the
|
||||
\uicontrol {Form Editor}. The CustomButton type is listed in
|
||||
\uicontrol Library > \uicontrol {QML Types} >
|
||||
\uicontrol {My QML Components}. We drag and drop several instances of
|
||||
the type to the \uicontrol {Form Editor} and enclose them in a RowLayout
|
||||
type to lay them out as a menu bar.
|
||||
\l {Form Editor}. The CustomButton component is listed in
|
||||
\l Library > \uicontrol Components > \uicontrol {My Components}.
|
||||
We drag and drop several instances of the component to the \l {Form Editor}
|
||||
and enclose them in a RowLayout component to lay them out as a menu bar.
|
||||
|
||||
\image sidemenu-menubar.png
|
||||
|
||||
@@ -126,10 +125,10 @@
|
||||
click the burger menu. In the \uicontrol {Form Editor}, we use the
|
||||
\l Text and \l {slider-control}{Slider} components to create separate
|
||||
submenus for each set of effects we want to apply to the images. We use
|
||||
a background image for the menu background and a BurgerMenu custom QML
|
||||
type for the burger menu icon.
|
||||
a background image for the menu background and a BurgerMenu custom
|
||||
component for the burger menu icon.
|
||||
|
||||
\image sidemenu-ui.png "SliderMenu type"
|
||||
\image sidemenu-ui.png "SliderMenu component"
|
||||
|
||||
We add states to the \e {SideMenu.qml} file in the \uicontrol {Form Editor}.
|
||||
When the application starts, the side menu is in the \e closed state, which
|
||||
@@ -148,7 +147,7 @@
|
||||
\image sidemenu-states.png "Side menu states"
|
||||
|
||||
We then select the \inlineimage plus.png
|
||||
button in the \uicontrol Timeline view to add animation
|
||||
button in the \l Timeline view to add animation
|
||||
for transitions to the \e open and \e close states:
|
||||
|
||||
\image sidemenu-timeline-settings.png "Side menu timeline settings"
|
||||
@@ -182,7 +181,7 @@
|
||||
We select \inlineimage animation.png "Timeline Settings button"
|
||||
to open the \uicontrol {Timeline Settings} dialog. In the
|
||||
\uicontrol {Transitions to states} field, we select the state to
|
||||
switch to when the animation finishes. In the lower part of the
|
||||
apply when the animation finishes. In the lower part of the
|
||||
dialog, we bind the states that don't have animations to fixed frames.
|
||||
|
||||
For more information about using the timeline, see \l {Creating Animations}.
|
||||
@@ -192,7 +191,7 @@
|
||||
In \e {SideMenu.qml}, we use connections to bind the action of clicking
|
||||
the burger menu to the signal handler for triggering the opening or
|
||||
closing animation, depending on the current state. We create the connections
|
||||
in the \uicontrol Connections view.
|
||||
in the \l Connections view.
|
||||
|
||||
\image sidemenu-connections.png
|
||||
|
||||
@@ -211,13 +210,14 @@
|
||||
\section1 Applying Effects
|
||||
|
||||
We nest the effects in an effects stack and bind them to the
|
||||
\l {slider-control}{Slider} type instances. The effects apply
|
||||
\l {slider-control}{Slider} component instances. The effects apply
|
||||
to all the images in the example application, not just the
|
||||
currently open one.
|
||||
|
||||
We use property bindings to connect the controls in the slider menu to
|
||||
\l {2D Effects}{graphical effects}. To have access to the
|
||||
properties from all the slider type instances, we export them as aliases
|
||||
properties from all the slider component instances, we export them as
|
||||
|
||||
in \e SliderMenu.ui.qml. We select \uicontrol {Export Property as Alias}
|
||||
in the \uicontrol Settings menu of the \uicontrol Value property in
|
||||
\uicontrol Properties > \uicontrol Slider.
|
||||
@@ -227,9 +227,10 @@
|
||||
|
||||
\image sidemenu-effects-stack.png "Effects stack in the Navigator"
|
||||
|
||||
We use the \l {Images}{Image} type as the last item in the stack to display
|
||||
images that we apply the effects to. We export the image source property as
|
||||
an alias to be able to switch the image inside the stack.
|
||||
We use the \l {Images}{Image} component as the last item in the stack to
|
||||
display images that we apply the effects to. We export the image source
|
||||
property as an \l{Adding Property Aliases}{alias} to be able to switch
|
||||
the image inside the stack.
|
||||
|
||||
For more information about the available graphical effects, see
|
||||
\l {2D Effects}.
|
||||
|
@@ -48,26 +48,26 @@
|
||||
Users select buttons to navigate between the screens.
|
||||
We use \l{Connecting Components to Signals}{connections} to determine which
|
||||
screen to open when users select a particular button and \l{Adding States}
|
||||
{States} to show the screens. We use the \l{Creating Animations}{timeline}
|
||||
{states} to show the screens. We use the \l{Creating Animations}{timeline}
|
||||
to create progress indicators for buttons and the \e Running screen.
|
||||
|
||||
In addition, all screens contain a small clock component that displays
|
||||
the current time. We implement a \e TimeDate JavaScript component to
|
||||
the current time. We implement a \e TimeDate JavaScript object to
|
||||
support this feature on \l{https://doc.qt.io/QtForMCUs/qtul-qmltypes.html}
|
||||
{Qt for MCUs}, which does not support the \l Date QML type at the time of
|
||||
{Qt for MCUs}, which does not support the \l Date component at the time of
|
||||
writing.
|
||||
|
||||
\section1 Creating an Application for MCUs
|
||||
|
||||
We use the \uicontrol {Qt for MCUs Application} project template to create
|
||||
an application for MCUs, which support only a subset of the \l{Qt QML},
|
||||
\l {Qt Quick}, and \l{Qt Quick Controls} types. We select \uicontrol File >
|
||||
an application for MCUs, which support only a subset of the preset
|
||||
\l{glossary-component}{components}. We select \uicontrol File >
|
||||
\uicontrol {New File or Project} > \uicontrol {Qt for MCUs Application} >
|
||||
\uicontrol Choose, and follow the instructions of the wizard to create our
|
||||
project.
|
||||
|
||||
This way, only the components and properties supported on MCUs are visible
|
||||
in \uicontrol Library and \uicontrol Properties, and we won't accidentally
|
||||
in \l Library and \l Properties, and we won't accidentally
|
||||
add unsupported components to our UI or specify unsupported properties for
|
||||
supported components. For more information, see \l{Creating Projects}.
|
||||
|
||||
@@ -84,10 +84,10 @@
|
||||
For this example, we used an external tool to design the UI and then
|
||||
exported and imported our design into \QDS as assets and components
|
||||
using \QB, as instructed in \l{Exporting from Design Tools}. While
|
||||
exporting, we only picked QML types supported by Qt for MCUs to use
|
||||
exporting, we only picked components supported by Qt for MCUs to use
|
||||
for our components. For the button components, we mostly use the
|
||||
\l {basic-image}{Image}, \l Text, and \l {Mouse Area} types. For the
|
||||
screen background, we use the \l {basic-rectangle}{Rectangle} type.
|
||||
\l {basic-image}{Image}, \l Text, and \l {Mouse Area} components. For the
|
||||
screen background, we use the \l {basic-rectangle}{Rectangle} component.
|
||||
|
||||
The text might look different on the desktop and MCUs, because on the
|
||||
desktop we use dynamic font loading, whereas on MCUs fonts are compiled
|
||||
@@ -128,7 +128,7 @@
|
||||
We animate the rotation properties of the arc segments to rotate each of
|
||||
them into the next block, one after another.
|
||||
|
||||
We use this component instead of the \l Arc type, which is not supported
|
||||
We use this component instead of the \l Arc component, which is not supported
|
||||
on MCUs.
|
||||
|
||||
We can now add a timeline animation to make the arc move around the button
|
||||
@@ -199,10 +199,10 @@
|
||||
\section1 Connecting Buttons to State Changes
|
||||
|
||||
In each file that defines a screen, we connect signals to the
|
||||
button objects to change to a particular state when users select
|
||||
button components to change to a particular state when users select
|
||||
buttons.
|
||||
|
||||
Some signals are predefined for the \l {Mouse Area} type, some we have to
|
||||
Some signals are predefined for the \l {Mouse Area} component, some we have to
|
||||
add ourselves. For example, let's look at the start button that we use
|
||||
in \e StartScreen.ui.qml. First, we use the \uicontrol {Text Editor} view
|
||||
to create the \c startClicked signal:
|
||||
@@ -231,14 +231,14 @@
|
||||
which overrides \c when conditions. Otherwise, we could just select the
|
||||
action to change to the state that we want in the \uicontrol Action field.
|
||||
|
||||
We create similar connections between button objects and signals in the
|
||||
We create similar connections between button components and signals in the
|
||||
other screens to apply other actions that move users to other screens.
|
||||
|
||||
For more information, see \l {Connecting Components to Signals}.
|
||||
|
||||
\section1 Showing the Current Time
|
||||
|
||||
The \l Date QML type is not supported on Qt for MCUs, and the
|
||||
The \l Date component is not supported on Qt for MCUs, and the
|
||||
\l{https://doc.qt.io/QtForMCUs/qtul-javascript-environment.html}
|
||||
{implementation of the JavaScript \c Date()} object returns elapsed
|
||||
time since when the application was started instead of the current
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Design Studio documentation.
|
||||
@@ -42,7 +42,7 @@
|
||||
\section1 Exporting from Adobe Photoshop
|
||||
|
||||
We use Adobe Photoshop to design our application and \QB to export our
|
||||
design to \QDS as PNG images and custom QML types.
|
||||
design to \QDS as PNG images and custom components.
|
||||
|
||||
Before we can begin, we must set up \QB as instructed in
|
||||
\l{Exporting Designs from Adobe Photoshop}.
|
||||
@@ -63,10 +63,10 @@
|
||||
will be exported as PNG files, with references to them in the component file
|
||||
that contains them.
|
||||
|
||||
We can export some components as QML types that provide the functionality
|
||||
that we want. To use the types in \QDS, we need to add import statements
|
||||
that pull in the modules that contain the types. We can even specify
|
||||
properties for the types to export, so that we won't have to do that in
|
||||
We can export some components as components that provide the functionality
|
||||
that we want. To use the components in \QDS, we need to add import statements
|
||||
that pull in the modules that contain the components. We can even specify
|
||||
properties for the components to export, so that we won't have to do that in
|
||||
\QDS.
|
||||
|
||||
\section2 Creating a Reference Image
|
||||
@@ -94,12 +94,12 @@
|
||||
|
||||
\image webinardemo-qb-stacklayout.png "Settings for exporting stackLayout artboard"
|
||||
|
||||
For the stackLayoutFrame layer, we want to use a \l StackLayout QML type,
|
||||
For the stackLayoutFrame layer, we want to use a \l StackLayout component,
|
||||
which provides a stack of items where only one item is visible at a time.
|
||||
In the \uicontrol {QML Type} field, we enter \e StackLayout.
|
||||
|
||||
To be able to use the type, we enter the statement that imports the
|
||||
Qt Quick Layouts module, which contains the type, in the
|
||||
To be able to use the component, we enter the statement that imports the
|
||||
Qt Quick Layouts module, which contains the component, in the
|
||||
\uicontrol {Add Imports} field: \c {QtQuick.Layouts 1.3}.
|
||||
|
||||
We will add content to the stack layout in \QDS.
|
||||
@@ -110,10 +110,10 @@
|
||||
|
||||
We want to apply the \l {FastBlur} effect to the smallPopup UI control.
|
||||
In the artboard, we have a blurEffect layer that we want to export as a
|
||||
FastBlurItem QML type. In the \uicontrol {QML Type} field, we enter
|
||||
FastBlurItem component. In the \uicontrol {QML Type} field, we enter
|
||||
\e FastBlurItem.
|
||||
|
||||
To be able to use the type, we added the statement that imports the
|
||||
To be able to use the component, we added the statement that imports the
|
||||
Qt Quick Studio Effects module: \c {QtQuick.Studio.Effects 1.0}.
|
||||
|
||||
We specify that the component to which we want to apply the effect is a
|
||||
@@ -121,7 +121,7 @@
|
||||
in the \uicontrol {QML Properties} field. We can modify the property in
|
||||
the \uicontrol Radius field in the \uicontrol Properties view in \QDS.
|
||||
|
||||
\image webinardemo-blureffect.png "FastBlurItem QML item in Design mode"
|
||||
\image webinardemo-blureffect.png "FastBlurItem component in Design mode"
|
||||
|
||||
\section2 Creating a Menu with Reusable Buttons
|
||||
|
||||
@@ -159,12 +159,12 @@
|
||||
|
||||
\section1 Using Imported Components
|
||||
|
||||
The \e {LayoutReference.ui.qml} file contains a reference image of the
|
||||
UI we will create. We use the imported components to create the
|
||||
The \e {LayoutReference.ui.qml} file contains a reference image of
|
||||
the UI we will create. We use the imported components to create the
|
||||
UI in the \e {MainApp.ui.qml} file. The imported components are
|
||||
listed in \uicontrol Library > \uicontrol {QML Types} >
|
||||
\uicontrol {My QML Components}, and we can drag and drop them to the
|
||||
\uicontrol {Form Editor}.
|
||||
listed in \uicontrol Library > \uicontrol Components >
|
||||
\uicontrol {My Components}, and we can drag and drop them to the
|
||||
\l {Form Editor}.
|
||||
|
||||
\image webinardemo-mainappui.png "Main app UI in Design mode"
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 16 KiB |
@@ -124,7 +124,7 @@
|
||||
layer into. The component that is generated during import will be
|
||||
of this type. For example, if you drew a rectangle, you can export
|
||||
it as a \l Rectangle component. You can provide the
|
||||
\l{Learn Qt Quick - QML Types}{import statement} of the component
|
||||
\l{Learn More - Components}{import statement} of the component
|
||||
set where the component is defined in the \uicontrol {Imports} field.
|
||||
\row
|
||||
\li \uicontrol Properties
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2018 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Design Studio documentation.
|
||||
@@ -60,7 +60,7 @@
|
||||
\li In the File Explorer, create a new folder for the mock data
|
||||
inside the \e imports folder in your project folder (for example, \e Data).
|
||||
\note Make sure to capitalize the \e Data folder name, because you
|
||||
will need to import it as a QML type later, and QML type names must
|
||||
will need to import it as a component later, and component names must
|
||||
be capitalized.
|
||||
\note If you place this folder somewhere else in the project, you will
|
||||
need to add the path to the list of imports. To do this, in \QDS, open
|
||||
@@ -79,7 +79,7 @@
|
||||
in the data folder. In these instructions, the file is called
|
||||
\e Values.qml.
|
||||
\note Make sure to capitalize the filename, because it will become
|
||||
a custom QML type.
|
||||
a custom component.
|
||||
\li Select \uicontrol File > \uicontrol {New File or Project} >
|
||||
\uicontrol {Files and Classes} > \uicontrol {JavaScript} >
|
||||
\uicontrol {JavaScript File} > \uicontrol Choose to create a
|
||||
@@ -120,7 +120,7 @@
|
||||
|
||||
}
|
||||
\endcode
|
||||
\li Add the following code to use a \l Timer type to specify a range of
|
||||
\li Add the following code to use a \l Timer component to specify a range of
|
||||
values for the property:
|
||||
\code
|
||||
property Timer name1Timer: Timer{
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Design Studio documentation.
|
||||
@@ -43,8 +43,8 @@
|
||||
to enter the settings needed for that particular type of project and create
|
||||
the necessary files for you.
|
||||
|
||||
Studio projects are useful for creating UIs. You cannot use
|
||||
them for application development, because they do not contain:
|
||||
\QDS projects are useful for creating UIs. You cannot use them for
|
||||
application development, because they do not contain:
|
||||
|
||||
\list
|
||||
\li C++ code
|
||||
@@ -52,7 +52,7 @@
|
||||
\li Code needed for deploying applications to devices.
|
||||
\endlist
|
||||
|
||||
Because the UIs do not contain any C++ code, you do not need
|
||||
Because the projects do not contain any C++ code, you do not need
|
||||
to build them. To test how well your designs work, you can preview the
|
||||
UIs on the desktop or embedded Linux devices. For more
|
||||
information, see \l{Previewing}.
|
||||
@@ -64,20 +64,18 @@
|
||||
|
||||
\list
|
||||
\li \uicontrol {Qt for MCUs Application} creates an application that
|
||||
uses a subset of \l{Qt QML} and \l{Qt Quick Controls} types (as
|
||||
supported by Qt for MCUs) that you can deploy, run, and debug on
|
||||
MCU boards.
|
||||
\li \uicontrol {Qt Quick Application - Empty} creates a Qt Quick UI
|
||||
project that uses \l{Qt Quick} types and can be run on all target
|
||||
platforms.
|
||||
\li \uicontrol {Qt Quick 3D Application} creates a Qt Quick UI project
|
||||
that uses Qt Quick and \l{Qt Quick 3D} types.
|
||||
uses a subset of preset components (as supported by Qt for MCUs)
|
||||
that you can deploy, run, and debug on MCU boards.
|
||||
\li \uicontrol {Qt Quick Application - Empty} creates a project that
|
||||
uses default components and can be run on all target platforms.
|
||||
\li \uicontrol {Qt Quick 3D Application} creates a project that uses
|
||||
default and 3D components.
|
||||
\li \uicontrol {Qt Quick Application - Scroll} and
|
||||
\uicontrol {Qt Quick Application - Stack} create a Qt Quick
|
||||
application that uses Qt Quick Controls to implement a scrollable
|
||||
\uicontrol {Qt Quick Application - Stack} create an application
|
||||
that uses preset UI controls to implement a scrollable
|
||||
list or a set of pages with a stack-based navigation model.
|
||||
\li \uicontrol {Qt Quick Application - Launcher} creates a Qt Quick UI
|
||||
project that uses Qt Quick types and defines a QML laucher
|
||||
\li \uicontrol {Qt Quick Application - Launcher} creates a
|
||||
project that uses default components and defines a launcher
|
||||
application.
|
||||
\endlist
|
||||
|
||||
|
@@ -162,7 +162,7 @@
|
||||
|
||||
For example, to use a \l Text component to display the value of a
|
||||
slider, we drag-and-drop \uicontrol Text, \uicontrol Slider, and
|
||||
\uicontrol {String Mapper} components to the same parent item. Then
|
||||
\uicontrol {String Mapper} components to the same parent component. Then
|
||||
we select \uicontrol {String Mapper} in \uicontrol Navigator to display
|
||||
its properties in \uicontrol Properties. There we bind the value of the
|
||||
\c input property of the string mapper to the value of the \c value
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 The Qt Company Ltd.
|
||||
** Copyright (C) 2021 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Design Studio documentation.
|
||||
@@ -30,24 +30,23 @@
|
||||
|
||||
\title 2D Effects
|
||||
|
||||
\QDS provides a set of Qt Quick Studio effects that inherit the types in the
|
||||
\l {Qt Graphical Effects} module. To apply a visual effect to a component,
|
||||
drag-and-drop it from \uicontrol Library > \uicontrol Effects to the
|
||||
component in \uicontrol Navigator.
|
||||
\QDS provides a set of effects that you can apply to components by
|
||||
dragging-and-dropping them from \l Library > \uicontrol Components
|
||||
> \uicontrol {Qt Quick Studio Effects} to the component in \l Navigator.
|
||||
|
||||
\image studio-2d-effects.png "Effects tab in Library"
|
||||
|
||||
Effects have one or more source properties for specifying the visual input
|
||||
for which the effect is applied to an item. The altered visual output is
|
||||
then presented in the effect item itself. The source can be another, often
|
||||
hidden, item in the QML scene. More complex effects can have multiple
|
||||
sources. The source item type can be any QML type, even video or another
|
||||
for which the effect is applied to a component. The altered visual output is
|
||||
then presented in the effect component itself. The source can be another,
|
||||
often hidden, component in the scene. More complex effects can have multiple
|
||||
sources. The source component can be any component, even video or another
|
||||
effect. Pipelining multiple effects together is a simple way to create
|
||||
even more impressive output.
|
||||
|
||||
Each effect has a set of properties that can be used to configure the effect
|
||||
output. Properties can be animated just like any other QML properties. The
|
||||
QML type documentation contains property descriptions and basic usage
|
||||
output. They can be animated just like any other properties. The
|
||||
component documentation contains property descriptions and basic usage
|
||||
examples.
|
||||
|
||||
In addition to the effects described in this topic, you can set linear,
|
||||
@@ -64,29 +63,29 @@
|
||||
cache when the source or the effect properties are animated.
|
||||
|
||||
The \uicontrol {Transparent border} property determines the blur behavior
|
||||
near the edges of the item, where the pixel blurring is affected by
|
||||
near the edges of the component, where the pixel blurring is affected by
|
||||
the pixels outside the source edges.
|
||||
|
||||
If the property is set to \c true, the pixels outside the source are
|
||||
interpreted as being transparent, which is similar to OpenGL clamp-to-border
|
||||
extension. The blur is expanded slightly outside the effect item area.
|
||||
extension. The blur is expanded slightly outside the effect component area.
|
||||
|
||||
If the property is set to \c false, the pixels outside the source are
|
||||
interpreted as containing the same color as the pixels at the edge of
|
||||
the item, which is similar to OpenGL clamp-to-edge behavior. The blur
|
||||
does not expand outside the effect item area.
|
||||
the component, which is similar to OpenGL clamp-to-edge behavior. The blur
|
||||
does not expand outside the effect component area.
|
||||
|
||||
\section1 Summary of 2D Effects
|
||||
|
||||
The following table summarizes the available effects and contains links to
|
||||
the documentation of the inherited QML type.
|
||||
the developer documentation of the inherited component.
|
||||
|
||||
\note The effects are available when running with OpenGL.
|
||||
|
||||
\table
|
||||
\header
|
||||
\li Icon
|
||||
\li Qt Quick Studio Effect
|
||||
\li Effect
|
||||
\li Description
|
||||
\row
|
||||
\li \inlineimage icons/blend-mode-16px.png
|
||||
@@ -122,13 +121,13 @@
|
||||
\uicontrol Desaturation field. The value ranges from \c 0.0
|
||||
(no change) to \c 1.0 (desaturated). Desaturated pixel values are
|
||||
calculated as averages of the original RGB component values
|
||||
of the source item.
|
||||
of the source component.
|
||||
\row
|
||||
\li \inlineimage icons/directional-blur-16px.png
|
||||
\li \l {DirectionalBlur}{Directional Blur}
|
||||
\li Applies a blur effect to the specified direction. The value of the
|
||||
\uicontrol Angle field, defines the direction of the blur. This
|
||||
effect makes the source item appear to be moving in the direction of
|
||||
effect makes the source component appear to be moving in the direction of
|
||||
the blur. Blur is applied to both sides of each pixel, and therefore
|
||||
setting the direction to \c 0 and \c 180 provides the same result.
|
||||
|
||||
@@ -142,7 +141,7 @@
|
||||
\row
|
||||
\li \inlineimage icons/displace-16px.png
|
||||
\li \l Displace
|
||||
\li Moves the pixels of the source item according to the displacement
|
||||
\li Moves the pixels of the source component according to the displacement
|
||||
map specified in the \uicontrol {Displacement source} field.
|
||||
|
||||
The value of the \uicontrol Displacement field specifies the
|
||||
@@ -156,7 +155,7 @@
|
||||
\li \l {DropShadow}{Drop Shadow}
|
||||
\li Generates a soft shadow behind the source component using a
|
||||
gaussian blur. This effect blurs the alpha channel of the input and
|
||||
colorizes the result, which it then places behind the source object
|
||||
colorizes the result, which it then places behind the source component
|
||||
to create a soft shadow. You can set the shadow's color in the
|
||||
\uicontrol {Drop Shadow Color} field and change its location in the
|
||||
\uicontrol {Horizontal offset} and \uicontrol {Vertical offset}
|
||||
@@ -192,7 +191,7 @@
|
||||
\row
|
||||
\li \inlineimage icons/gamma-adjust-16px.png
|
||||
\li \l [QML] {GammaAdjust}{Gamma Adjust}
|
||||
\li Alters the luminance of the source item. This effect is applied
|
||||
\li Alters the luminance of the source component. This effect is applied
|
||||
to each pixel according to the curve that is pre-defined as a
|
||||
power-law expression, where the value of the \uicontrol Gamma
|
||||
field is used as the reciprocal scaling exponent.
|
||||
@@ -223,7 +222,7 @@
|
||||
\li Generates a halo-like glow around the source component. This effect
|
||||
blurs the alpha channel of the source and colorizes it with
|
||||
\uicontrol {Glow color}. It then places the alpha channel behind the
|
||||
source, resulting in a halo or glow around the object. The quality
|
||||
source, resulting in a halo or glow around the component. The quality
|
||||
of the blurred edge can be controlled by using the values of the
|
||||
\uicontrol Samples and \uicontrol Radius and the strength of the
|
||||
glow can be changed using the value of the \uicontrol Spread field.
|
||||
@@ -261,8 +260,8 @@
|
||||
\li \inlineimage icons/levels-16px.png
|
||||
\li \l {LevelAdjust}{Level Adjust}
|
||||
\li Adjusts color levels in the RGBA color space. This effect adjusts
|
||||
the source item colors separately for each color channel. Source
|
||||
item contrast can be adjusted and color balance altered.
|
||||
the source component colors separately for each color channel. Source
|
||||
component contrast can be adjusted and color balance altered.
|
||||
|
||||
The value of the \uicontrol Gamma field specifies the change factor
|
||||
for how the value of each pixel color channel is altered according
|
||||
@@ -303,9 +302,9 @@
|
||||
\li \inlineimage icons/opacity-mask-16px.png
|
||||
\li \l {OpacityMask}{Opacity Mask}
|
||||
\li Masks the source component with another component specified in the
|
||||
\uicontrol {Mask source} field. The mask item gets rendered into an
|
||||
\uicontrol {Mask source} field. The mask component gets rendered into an
|
||||
intermediate pixel buffer and the alpha values from the result are
|
||||
used to determine the visibility of the source item's pixels in the
|
||||
used to determine the visibility of the source component's pixels in the
|
||||
display.
|
||||
|
||||
Select the \uicontrol Invert check box to specify that the
|
||||
@@ -317,7 +316,7 @@
|
||||
\li \inlineimage icons/radial-blur-16px.png
|
||||
\li \l {RadialBlur}{Radial Blur}
|
||||
\li Applies a directional blur effect in a circular direction around the
|
||||
component's center point. This effect makes the source item appear
|
||||
component's center point. This effect makes the source component appear
|
||||
to be rotating into the direction of the blur. Other available
|
||||
motionblur effects are \uicontrol {Zoom Blur} and
|
||||
\uicontrol {Directional Blur}.
|
||||
@@ -345,7 +344,7 @@
|
||||
\row
|
||||
\li \inlineimage icons/threshold-16px.png
|
||||
\li \l {ThresholdMask}{Threshold Mask}
|
||||
\li Masks the source item with another item specified by
|
||||
\li Masks the source component with another component specified by
|
||||
\uicontrol {Mask source}. The value of the \uicontrol Spread
|
||||
field determines the smoothness of the mask edges near the
|
||||
\uicontrol Threshold alpha value. Setting spread to \c 0.0 uses
|
||||
@@ -356,7 +355,7 @@
|
||||
\li \inlineimage icons/zoom-blur-16px.png
|
||||
\li \l {ZoomBlur}{Zoom Blur}
|
||||
\li Applies a directional blur effect towards source component's
|
||||
center point. This effect makes the source item appear to be
|
||||
center point. This effect makes the source component appear to be
|
||||
moving towards the center point in Z-direction or the camera
|
||||
appear to be zooming rapidly.
|
||||
|
||||
|
@@ -163,7 +163,7 @@ Section {
|
||||
|
||||
Label {
|
||||
text: qsTr("Focus")
|
||||
tooltip: qsTr("Sets focus on the item within the enclosing focus scope.")
|
||||
tooltip: qsTr("Sets focus on the component within the enclosing focus scope.")
|
||||
disabledState: !backendValues.focus.isAvailable
|
||||
}
|
||||
SecondColumnLayout {
|
||||
@@ -178,7 +178,7 @@ Section {
|
||||
|
||||
Label {
|
||||
text: qsTr("Active focus on tab")
|
||||
tooltip: qsTr("Adds the item to the tab focus chain.")
|
||||
tooltip: qsTr("Adds the component to the tab focus chain.")
|
||||
disabledState: !backendValues.activeFocusOnTab.isAvailable
|
||||
}
|
||||
SecondColumnLayout {
|
||||
@@ -193,7 +193,7 @@ Section {
|
||||
|
||||
Label {
|
||||
text: qsTr("Baseline offset")
|
||||
tooltip: qsTr("Position of the item's baseline in local coordinates.")
|
||||
tooltip: qsTr("Position of the component's baseline in local coordinates.")
|
||||
disabledState: !backendValues.baselineOffset.isAvailable
|
||||
}
|
||||
SecondColumnLayout {
|
||||
|
@@ -327,7 +327,7 @@ Section {
|
||||
font.pixelSize: StudioTheme.Values.myFontSize
|
||||
color: StudioTheme.Values.themeTextColor
|
||||
wrapMode: Text.WordWrap
|
||||
text: qsTr("- The selection contains the root item.")
|
||||
text: qsTr("- The selection contains the root component.")
|
||||
}
|
||||
Text {
|
||||
id: warningNonVisual
|
||||
@@ -337,7 +337,7 @@ Section {
|
||||
font.pixelSize: StudioTheme.Values.myFontSize
|
||||
color: StudioTheme.Values.themeTextColor
|
||||
wrapMode: Text.WordWrap
|
||||
text: qsTr("- The selection contains a non visual item.")
|
||||
text: qsTr("- The selection contains a non-visual component.")
|
||||
}
|
||||
Text {
|
||||
id: warningAnchors
|
||||
@@ -347,7 +347,7 @@ Section {
|
||||
font.pixelSize: StudioTheme.Values.myFontSize
|
||||
color: StudioTheme.Values.themeTextColor
|
||||
wrapMode: Text.WordWrap
|
||||
text: qsTr("- An item in the selection uses anchors.")
|
||||
text: qsTr("- A component in the selection uses anchors.")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -39,7 +39,7 @@ Column {
|
||||
SectionLayout {
|
||||
Label {
|
||||
text: qsTr("Enabled")
|
||||
tooltip: qsTr("Sets whether the item accepts change events.")
|
||||
tooltip: qsTr("Sets whether the component accepts change events.")
|
||||
}
|
||||
SecondColumnLayout {
|
||||
CheckBox {
|
||||
@@ -65,7 +65,7 @@ Column {
|
||||
|
||||
Label {
|
||||
text: qsTr("Target")
|
||||
tooltip: qsTr("Sets the object that sends the signal.")
|
||||
tooltip: qsTr("Sets the component that sends the signal.")
|
||||
}
|
||||
SecondColumnLayout {
|
||||
ItemFilterComboBox {
|
||||
|
@@ -98,7 +98,7 @@ Column {
|
||||
}
|
||||
|
||||
Label {
|
||||
text: qsTr("Horizontal item alignment")
|
||||
text: qsTr("Horizontal component alignment")
|
||||
}
|
||||
|
||||
SecondColumnLayout {
|
||||
@@ -111,7 +111,7 @@ Column {
|
||||
}
|
||||
|
||||
Label {
|
||||
text: qsTr("Vertical item alignment")
|
||||
text: qsTr("Vertical component alignment")
|
||||
}
|
||||
|
||||
SecondColumnLayout {
|
||||
|
@@ -51,7 +51,7 @@ Rectangle {
|
||||
width: itemPane.width
|
||||
Section {
|
||||
z: 2
|
||||
caption: qsTr("Type")
|
||||
caption: qsTr("Component")
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
@@ -81,7 +81,7 @@ Rectangle {
|
||||
typeLineEdit.visible = ! typeLineEdit.visible
|
||||
typeLineEdit.forceActiveFocus()
|
||||
}
|
||||
tooltip: qsTr("Changes the type of this item.")
|
||||
tooltip: qsTr("Changes the type of this component.")
|
||||
enabled: !modelNodeBackend.multiSelection
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@ Rectangle {
|
||||
}
|
||||
|
||||
Label {
|
||||
text: qsTr("id")
|
||||
text: qsTr("ID")
|
||||
}
|
||||
|
||||
SecondColumnLayout {
|
||||
@@ -137,7 +137,7 @@ Rectangle {
|
||||
id: lineEdit
|
||||
|
||||
backendValue: backendValues.id
|
||||
placeholderText: qsTr("id")
|
||||
placeholderText: qsTr("ID")
|
||||
text: backendValues.id.value
|
||||
Layout.fillWidth: true
|
||||
width: 240
|
||||
@@ -191,13 +191,13 @@ Rectangle {
|
||||
enabled: !modelNodeBackend.multiSelection
|
||||
anchors.fill: parent
|
||||
onClicked: toogleExportAlias()
|
||||
tooltip: qsTr("Exports this item as an alias property of the root item.")
|
||||
tooltip: qsTr("Exports this component as an alias property of the root component.")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
text: qsTr("Custom id")
|
||||
text: qsTr("Custom ID")
|
||||
}
|
||||
|
||||
SecondColumnLayout {
|
||||
|
@@ -54,7 +54,7 @@ Section {
|
||||
|
||||
Label {
|
||||
text: qsTr("Enabled")
|
||||
tooltip: qsTr("Whether the item is layered or not.")
|
||||
tooltip: qsTr("Whether the component is layered or not.")
|
||||
}
|
||||
SecondColumnLayout {
|
||||
CheckBox {
|
||||
|
@@ -118,7 +118,7 @@ SectionLayout {
|
||||
|
||||
Label {
|
||||
text: qsTr("Alignment")
|
||||
tooltip: qsTr("Alignment of an item within the cells it occupies.")
|
||||
tooltip: qsTr("Alignment of a component within the cells it occupies.")
|
||||
}
|
||||
|
||||
SecondColumnLayout {
|
||||
@@ -201,7 +201,7 @@ SectionLayout {
|
||||
|
||||
Label {
|
||||
text: qsTr("Fill layout")
|
||||
tooltip: qsTr("Expands the item as much as possible within the given constraints.")
|
||||
tooltip: qsTr("Expands the component as much as possible within the given constraints.")
|
||||
}
|
||||
|
||||
SecondColumnLayout {
|
||||
@@ -220,7 +220,7 @@ SectionLayout {
|
||||
|
||||
Label {
|
||||
text: qsTr("Preferred size")
|
||||
tooltip: qsTr("Preferred size of an item in a layout. If the preferred height or width is -1, it is ignored.")
|
||||
tooltip: qsTr("Preferred size of a component in a layout. If the preferred height or width is -1, it is ignored.")
|
||||
}
|
||||
|
||||
SecondColumnLayout {
|
||||
@@ -260,7 +260,7 @@ SectionLayout {
|
||||
|
||||
Label {
|
||||
text: qsTr("Minimum size")
|
||||
tooltip: qsTr("Minimum size of an item in a layout.")
|
||||
tooltip: qsTr("Minimum size of a component in a layout.")
|
||||
}
|
||||
|
||||
SecondColumnLayout {
|
||||
@@ -300,7 +300,7 @@ SectionLayout {
|
||||
|
||||
Label {
|
||||
text: qsTr("Maximum size")
|
||||
tooltip: qsTr("Maximum size of an item in a layout.")
|
||||
tooltip: qsTr("Maximum size of a component in a layout.")
|
||||
}
|
||||
|
||||
SecondColumnLayout {
|
||||
@@ -340,7 +340,7 @@ SectionLayout {
|
||||
|
||||
Label {
|
||||
text: qsTr("Row span")
|
||||
tooltip: qsTr("Row span of an item in a Grid Layout.")
|
||||
tooltip: qsTr("Row span of a component in a Grid Layout.")
|
||||
}
|
||||
|
||||
SecondColumnLayout {
|
||||
@@ -362,7 +362,7 @@ SectionLayout {
|
||||
|
||||
Label {
|
||||
text: qsTr("Column span")
|
||||
tooltip: qsTr("Column span of an item in a Grid Layout.")
|
||||
tooltip: qsTr("Column span of a component in a Grid Layout.")
|
||||
}
|
||||
|
||||
SecondColumnLayout {
|
||||
|
@@ -132,7 +132,7 @@ Column {
|
||||
|
||||
Label {
|
||||
text: qsTr("Spacing")
|
||||
tooltip: qsTr("Spacing between items.")
|
||||
tooltip: qsTr("Spacing between components.")
|
||||
}
|
||||
|
||||
SectionLayout {
|
||||
|
@@ -195,7 +195,7 @@ Column {
|
||||
SectionLayout {
|
||||
Label {
|
||||
text: qsTr("Target")
|
||||
tooltip: qsTr("Id of the item to drag.")
|
||||
tooltip: qsTr("ID of the component to drag.")
|
||||
}
|
||||
SecondColumnLayout {
|
||||
ItemFilterComboBox {
|
||||
|
@@ -48,7 +48,7 @@ Rectangle {
|
||||
y: -1
|
||||
width: itemPane.width
|
||||
Section {
|
||||
caption: qsTr("Type")
|
||||
caption: qsTr("Component")
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
@@ -78,7 +78,7 @@ Rectangle {
|
||||
typeLineEdit.visible = ! typeLineEdit.visible
|
||||
typeLineEdit.forceActiveFocus()
|
||||
}
|
||||
tooltip: qsTr("Changes the type of this item.")
|
||||
tooltip: qsTr("Changes the type of this component.")
|
||||
enabled: !modelNodeBackend.multiSelection
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ Rectangle {
|
||||
}
|
||||
|
||||
Label {
|
||||
text: qsTr("id")
|
||||
text: qsTr("ID")
|
||||
}
|
||||
|
||||
SecondColumnLayout {
|
||||
@@ -134,7 +134,7 @@ Rectangle {
|
||||
id: lineEdit
|
||||
|
||||
backendValue: backendValues.id
|
||||
placeholderText: qsTr("id")
|
||||
placeholderText: qsTr("ID")
|
||||
text: backendValues.id.value
|
||||
Layout.fillWidth: true
|
||||
width: 240
|
||||
@@ -188,7 +188,7 @@ Rectangle {
|
||||
enabled: !modelNodeBackend.multiSelection
|
||||
anchors.fill: parent
|
||||
onClicked: toogleExportAlias()
|
||||
tooltip: qsTr("Exports this item as an alias property of the root item.")
|
||||
tooltip: qsTr("Exports this component as an alias property of the root component.")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -76,7 +76,7 @@ Section {
|
||||
|
||||
Label {
|
||||
visible: textInputSection.isTextInput
|
||||
text: qsTr("Pass. char")
|
||||
text: qsTr("Password character")
|
||||
tooltip: qsTr("Character displayed when users enter passwords.")
|
||||
}
|
||||
|
||||
|
@@ -42,7 +42,7 @@ Rectangle {
|
||||
|
||||
Label {
|
||||
id: test
|
||||
text: qsTr("None or multiple items selected.");
|
||||
text: qsTr("None or multiple components selected.");
|
||||
anchors.fill: parent
|
||||
}
|
||||
}
|
||||
|
@@ -48,7 +48,7 @@ Rectangle {
|
||||
y: -1
|
||||
width: itemPane.width
|
||||
Section {
|
||||
caption: qsTr("Type")
|
||||
caption: qsTr("Component")
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
@@ -78,7 +78,7 @@ Rectangle {
|
||||
typeLineEdit.visible = ! typeLineEdit.visible
|
||||
typeLineEdit.forceActiveFocus()
|
||||
}
|
||||
tooltip: qsTr("Change the type of this item.")
|
||||
tooltip: qsTr("Change the type of this component.")
|
||||
enabled: !modelNodeBackend.multiSelection
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ Rectangle {
|
||||
}
|
||||
|
||||
Label {
|
||||
text: qsTr("id")
|
||||
text: qsTr("ID")
|
||||
}
|
||||
|
||||
SecondColumnLayout {
|
||||
@@ -134,7 +134,7 @@ Rectangle {
|
||||
id: lineEdit
|
||||
|
||||
backendValue: backendValues.id
|
||||
placeholderText: qsTr("id")
|
||||
placeholderText: qsTr("ID")
|
||||
text: backendValues.id.value
|
||||
Layout.fillWidth: true
|
||||
width: 240
|
||||
@@ -188,7 +188,7 @@ Rectangle {
|
||||
enabled: !modelNodeBackend.multiSelection
|
||||
anchors.fill: parent
|
||||
onClicked: toogleExportAlias()
|
||||
tooltip: qsTr("Toggles whether this item is exported as an alias property of the root item.")
|
||||
tooltip: qsTr("Toggles whether this component is exported as an alias property of the root component.")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -43,7 +43,7 @@ StudioControls.ButtonRow {
|
||||
AbstractButton {
|
||||
checkable: true
|
||||
buttonIcon: StudioTheme.Constants.anchorTop
|
||||
tooltip: qsTr("Anchor item to the top.")
|
||||
tooltip: qsTr("Anchor component to the top.")
|
||||
|
||||
property bool topAnchored: anchorBackend.topAnchored
|
||||
onTopAnchoredChanged: {
|
||||
@@ -64,7 +64,7 @@ StudioControls.ButtonRow {
|
||||
AbstractButton {
|
||||
checkable: true
|
||||
buttonIcon: StudioTheme.Constants.anchorBottom
|
||||
tooltip: qsTr("Anchor item to the bottom.")
|
||||
tooltip: qsTr("Anchor component to the bottom.")
|
||||
|
||||
property bool bottomAnchored: anchorBackend.bottomAnchored
|
||||
onBottomAnchoredChanged: {
|
||||
@@ -85,7 +85,7 @@ StudioControls.ButtonRow {
|
||||
AbstractButton {
|
||||
checkable: true
|
||||
buttonIcon: StudioTheme.Constants.anchorLeft
|
||||
tooltip: qsTr("Anchor item to the left.")
|
||||
tooltip: qsTr("Anchor component to the left.")
|
||||
|
||||
property bool leftAnchored: anchorBackend.leftAnchored
|
||||
onLeftAnchoredChanged: {
|
||||
@@ -106,7 +106,7 @@ StudioControls.ButtonRow {
|
||||
AbstractButton {
|
||||
checkable: true
|
||||
buttonIcon: StudioTheme.Constants.anchorRight
|
||||
tooltip: qsTr("Anchor item to the right.")
|
||||
tooltip: qsTr("Anchor component to the right.")
|
||||
|
||||
property bool rightAnchored: anchorBackend.rightAnchored
|
||||
onRightAnchoredChanged: {
|
||||
@@ -132,7 +132,7 @@ StudioControls.ButtonRow {
|
||||
AbstractButton {
|
||||
checkable: true
|
||||
buttonIcon: StudioTheme.Constants.anchorFill
|
||||
tooltip: qsTr("Fill parent item.")
|
||||
tooltip: qsTr("Fill parent component.")
|
||||
|
||||
property bool isFilled: anchorBackend.isFilled
|
||||
onIsFilledChanged: {
|
||||
@@ -156,7 +156,7 @@ StudioControls.ButtonRow {
|
||||
AbstractButton {
|
||||
checkable: true
|
||||
buttonIcon: StudioTheme.Constants.centerVertical
|
||||
tooltip: qsTr("Anchor item vertically.")
|
||||
tooltip: qsTr("Anchor component vertically.")
|
||||
|
||||
property bool verticalCentered: anchorBackend.verticalCentered
|
||||
onVerticalCenteredChanged: {
|
||||
@@ -179,7 +179,7 @@ StudioControls.ButtonRow {
|
||||
AbstractButton {
|
||||
checkable: true
|
||||
buttonIcon: StudioTheme.Constants.centerHorizontal
|
||||
tooltip: qsTr("Anchor item horizontally.")
|
||||
tooltip: qsTr("Anchor component horizontally.")
|
||||
|
||||
property bool horizontalCentered: anchorBackend.horizontalCentered
|
||||
onHorizontalCenteredChanged: {
|
||||
|
@@ -34,7 +34,7 @@ Column {
|
||||
padding: 10
|
||||
|
||||
Label {
|
||||
text: qsTr("This item is an instance of a Component")
|
||||
text: qsTr("This is an instance of a component")
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: 300
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
@@ -45,7 +45,7 @@ Column {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: 180
|
||||
|
||||
buttonIcon: qsTr("Edit Master Component")
|
||||
buttonIcon: qsTr("Edit Base Component")
|
||||
iconFont: StudioTheme.Constants.font
|
||||
|
||||
onClicked: goIntoComponent()
|
||||
|
@@ -96,7 +96,7 @@ Section {
|
||||
|
||||
Label {
|
||||
text: qsTr("Interactive")
|
||||
tooltip: qsTr("Allows users to drag or flick a flickable item.")
|
||||
tooltip: qsTr("Allows users to drag or flick a flickable component.")
|
||||
}
|
||||
|
||||
SecondColumnLayout {
|
||||
|
@@ -109,7 +109,7 @@ Section {
|
||||
Label {
|
||||
visible: showElide
|
||||
text: qsTr("Maximum line count")
|
||||
tooltip: qsTr("Limits the number of lines that the text item will show.")
|
||||
tooltip: qsTr("Limits the number of lines that the text component will show.")
|
||||
disabledState: !backendValues.maximumLineCount.isAvailable
|
||||
}
|
||||
|
||||
@@ -155,7 +155,7 @@ Section {
|
||||
|
||||
Label {
|
||||
text: qsTr("Render type")
|
||||
toolTip: qsTr("Overrides the default rendering type for this item.")
|
||||
toolTip: qsTr("Overrides the default rendering type for this component.")
|
||||
disabledState: !backendValues.renderType.isAvailable
|
||||
}
|
||||
ComboBox {
|
||||
|
11135
src/libs/3rdparty/sqlite/sqlite3.c
vendored
11135
src/libs/3rdparty/sqlite/sqlite3.c
vendored
File diff suppressed because it is too large
Load Diff
61
src/libs/3rdparty/sqlite/sqlite3.h
vendored
61
src/libs/3rdparty/sqlite/sqlite3.h
vendored
@@ -123,9 +123,9 @@ extern "C" {
|
||||
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
||||
** [sqlite_version()] and [sqlite_source_id()].
|
||||
*/
|
||||
#define SQLITE_VERSION "3.34.0"
|
||||
#define SQLITE_VERSION_NUMBER 3034000
|
||||
#define SQLITE_SOURCE_ID "2020-12-01 16:14:00 a26b6597e3ae272231b96f9982c3bcc17ddec2f2b6eb4df06a224b91089fed5b"
|
||||
#define SQLITE_VERSION "3.35.0"
|
||||
#define SQLITE_VERSION_NUMBER 3035000
|
||||
#define SQLITE_SOURCE_ID "2021-03-12 15:10:09 acd63062eb06748bfe9e4886639e4f2b54ea6a496a83f10716abbaba4115500b"
|
||||
|
||||
/*
|
||||
** CAPI3REF: Run-Time Library Version Numbers
|
||||
@@ -2115,7 +2115,13 @@ struct sqlite3_mem_methods {
|
||||
** The second parameter is a pointer to an integer into which
|
||||
** is written 0 or 1 to indicate whether triggers are disabled or enabled
|
||||
** following this call. The second parameter may be a NULL pointer, in
|
||||
** which case the trigger setting is not reported back. </dd>
|
||||
** which case the trigger setting is not reported back.
|
||||
**
|
||||
** <p>Originally this option disabled all triggers. ^(However, since
|
||||
** SQLite version 3.35.0, TEMP triggers are still allowed even if
|
||||
** this option is off. So, in other words, this option now only disables
|
||||
** triggers in the main database schema or in the schemas of ATTACH-ed
|
||||
** databases.)^ </dd>
|
||||
**
|
||||
** [[SQLITE_DBCONFIG_ENABLE_VIEW]]
|
||||
** <dt>SQLITE_DBCONFIG_ENABLE_VIEW</dt>
|
||||
@@ -2126,7 +2132,13 @@ struct sqlite3_mem_methods {
|
||||
** The second parameter is a pointer to an integer into which
|
||||
** is written 0 or 1 to indicate whether views are disabled or enabled
|
||||
** following this call. The second parameter may be a NULL pointer, in
|
||||
** which case the view setting is not reported back. </dd>
|
||||
** which case the view setting is not reported back.
|
||||
**
|
||||
** <p>Originally this option disabled all views. ^(However, since
|
||||
** SQLite version 3.35.0, TEMP views are still allowed even if
|
||||
** this option is off. So, in other words, this option now only disables
|
||||
** views in the main database schema or in the schemas of ATTACH-ed
|
||||
** databases.)^ </dd>
|
||||
**
|
||||
** [[SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER]]
|
||||
** <dt>SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER</dt>
|
||||
@@ -3499,6 +3511,7 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
||||
** that uses dot-files in place of posix advisory locking.
|
||||
** <tr><td> file:data.db?mode=readonly <td>
|
||||
** An error. "readonly" is not a valid option for the "mode" parameter.
|
||||
** Use "ro" instead: "file:data.db?mode=ro".
|
||||
** </table>
|
||||
**
|
||||
** ^URI hexadecimal escape sequences (%HH) are supported within the path and
|
||||
@@ -3697,7 +3710,7 @@ SQLITE_API sqlite3_file *sqlite3_database_file_object(const char*);
|
||||
** If the Y parameter to sqlite3_free_filename(Y) is anything other
|
||||
** than a NULL pointer or a pointer previously acquired from
|
||||
** sqlite3_create_filename(), then bad things such as heap
|
||||
** corruption or segfaults may occur. The value Y should be
|
||||
** corruption or segfaults may occur. The value Y should not be
|
||||
** used again after sqlite3_free_filename(Y) has been called. This means
|
||||
** that if the [sqlite3_vfs.xOpen()] method of a VFS has been called using Y,
|
||||
** then the corresponding [sqlite3_module.xClose() method should also be
|
||||
@@ -7765,7 +7778,8 @@ SQLITE_API int sqlite3_test_control(int op, ...);
|
||||
#define SQLITE_TESTCTRL_PRNG_SEED 28
|
||||
#define SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS 29
|
||||
#define SQLITE_TESTCTRL_SEEK_COUNT 30
|
||||
#define SQLITE_TESTCTRL_LAST 30 /* Largest TESTCTRL */
|
||||
#define SQLITE_TESTCTRL_TRACEFLAGS 31
|
||||
#define SQLITE_TESTCTRL_LAST 31 /* Largest TESTCTRL */
|
||||
|
||||
/*
|
||||
** CAPI3REF: SQL Keyword Checking
|
||||
@@ -10438,6 +10452,14 @@ SQLITE_API int sqlite3session_patchset(
|
||||
*/
|
||||
SQLITE_API int sqlite3session_isempty(sqlite3_session *pSession);
|
||||
|
||||
/*
|
||||
** CAPI3REF: Query for the amount of heap memory used by a session object.
|
||||
**
|
||||
** This API returns the total amount of heap memory in bytes currently
|
||||
** used by the session object passed as the only argument.
|
||||
*/
|
||||
SQLITE_API sqlite3_int64 sqlite3session_memory_used(sqlite3_session *pSession);
|
||||
|
||||
/*
|
||||
** CAPI3REF: Create An Iterator To Traverse A Changeset
|
||||
** CONSTRUCTOR: sqlite3_changeset_iter
|
||||
@@ -10540,18 +10562,23 @@ SQLITE_API int sqlite3changeset_next(sqlite3_changeset_iter *pIter);
|
||||
** call to [sqlite3changeset_next()] must have returned [SQLITE_ROW]. If this
|
||||
** is not the case, this function returns [SQLITE_MISUSE].
|
||||
**
|
||||
** If argument pzTab is not NULL, then *pzTab is set to point to a
|
||||
** nul-terminated utf-8 encoded string containing the name of the table
|
||||
** affected by the current change. The buffer remains valid until either
|
||||
** sqlite3changeset_next() is called on the iterator or until the
|
||||
** conflict-handler function returns. If pnCol is not NULL, then *pnCol is
|
||||
** set to the number of columns in the table affected by the change. If
|
||||
** pbIndirect is not NULL, then *pbIndirect is set to true (1) if the change
|
||||
** Arguments pOp, pnCol and pzTab may not be NULL. Upon return, three
|
||||
** outputs are set through these pointers:
|
||||
**
|
||||
** *pOp is set to one of [SQLITE_INSERT], [SQLITE_DELETE] or [SQLITE_UPDATE],
|
||||
** depending on the type of change that the iterator currently points to;
|
||||
**
|
||||
** *pnCol is set to the number of columns in the table affected by the change; and
|
||||
**
|
||||
** *pzTab is set to point to a nul-terminated utf-8 encoded string containing
|
||||
** the name of the table affected by the current change. The buffer remains
|
||||
** valid until either sqlite3changeset_next() is called on the iterator
|
||||
** or until the conflict-handler function returns.
|
||||
**
|
||||
** If pbIndirect is not NULL, then *pbIndirect is set to true (1) if the change
|
||||
** is an indirect change, or false (0) otherwise. See the documentation for
|
||||
** [sqlite3session_indirect()] for a description of direct and indirect
|
||||
** changes. Finally, if pOp is not NULL, then *pOp is set to one of
|
||||
** [SQLITE_INSERT], [SQLITE_DELETE] or [SQLITE_UPDATE], depending on the
|
||||
** type of change that the iterator currently points to.
|
||||
** changes.
|
||||
**
|
||||
** If no error occurs, SQLITE_OK is returned. If an error does occur, an
|
||||
** SQLite error code is returned. The values of the output variables may not
|
||||
|
396
src/libs/3rdparty/syntax-highlighting/data/syntax/autoconf.xml
vendored
Normal file
396
src/libs/3rdparty/syntax-highlighting/data/syntax/autoconf.xml
vendored
Normal file
@@ -0,0 +1,396 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE language SYSTEM "/opt/kde3/share/apps/katepart/syntax/language.dtd">
|
||||
<!-- (c) 2008-2011 by Jürgen Heinemann http://www.hjcms.de
|
||||
@see http://www.gnu.org/software/automake/manual/autoconf/
|
||||
-->
|
||||
<language name="Autoconf Language" version="2" kateversion="2.4" section="Other"
|
||||
extensions="configure.ac;configure.in;configure.in.in;*.m4;*.M4"
|
||||
mimetype="text/x-m4;text/x-autoconf"
|
||||
author="Juergen Heinemann (nospam@hjcms.de)" license="LGPL">
|
||||
<highlighting>
|
||||
<!-- http://www.gnu.org/software/automake/manual/autoconf/Program-_0026-Function-Index.html -->
|
||||
<list name="keywords">
|
||||
<item> if </item>
|
||||
<item> then </item>
|
||||
<item> elif </item>
|
||||
<item> else </item>
|
||||
<item> fi </item>
|
||||
<item> for </item>
|
||||
<item> in </item>
|
||||
<item> do </item>
|
||||
<item> don </item>
|
||||
<item> function </item>
|
||||
<item> select </item>
|
||||
<item> until </item>
|
||||
<item> while </item>
|
||||
<item> set </item>
|
||||
<item> ifelse </item>
|
||||
<item> case </item>
|
||||
<item> esac </item>
|
||||
</list>
|
||||
|
||||
<!-- http://www.gnu.org/software/automake/manual/autoconf/Limitations-of-Builtins.html -->
|
||||
<list name="builtins">
|
||||
<item> : </item>
|
||||
<item> source </item>
|
||||
<item> alias </item>
|
||||
<item> bg </item>
|
||||
<item> bind </item>
|
||||
<item> break </item>
|
||||
<item> builtin </item>
|
||||
<item> cd </item>
|
||||
<item> caller </item>
|
||||
<item> command </item>
|
||||
<item> compgen </item>
|
||||
<item> complete </item>
|
||||
<item> continue </item>
|
||||
<item> dirs </item>
|
||||
<item> disown </item>
|
||||
<item> echo </item>
|
||||
<item> enable </item>
|
||||
<item> eval </item>
|
||||
<item> exec </item>
|
||||
<item> exit </item>
|
||||
<item> fc </item>
|
||||
<item> fg </item>
|
||||
<item> getopts </item>
|
||||
<item> hash </item>
|
||||
<item> help </item>
|
||||
<item> history </item>
|
||||
<item> jobs </item>
|
||||
<item> kill </item>
|
||||
<item> let </item>
|
||||
<item> logout </item>
|
||||
<item> popd </item>
|
||||
<item> printf </item>
|
||||
<item> pushd </item>
|
||||
<item> pwd </item>
|
||||
<item> return </item>
|
||||
<item> set </item>
|
||||
<item> shift </item>
|
||||
<item> shopt </item>
|
||||
<item> suspend </item>
|
||||
<item> test </item>
|
||||
<item> time </item>
|
||||
<item> times </item>
|
||||
<item> trap </item>
|
||||
<item> type </item>
|
||||
<item> ulimit </item>
|
||||
<item> umask </item>
|
||||
<item> unalias </item>
|
||||
<item> wait </item>
|
||||
</list>
|
||||
|
||||
<list name="bools">
|
||||
<item> no </item>
|
||||
<item> yes </item>
|
||||
<item> false </item>
|
||||
<item> true </item>
|
||||
</list>
|
||||
|
||||
<!--
|
||||
This is an alphabetical list of the M4, M4sugar, and M4sh macros.
|
||||
http://www.gnu.org/software/automake/manual/autoconf/M4-Macro-Index.html
|
||||
-->
|
||||
<list name="m4sugar">
|
||||
<item> AS_BOURNE_COMPATIBLE </item>
|
||||
<item> AS_BOX </item>
|
||||
<item> AS_CASE </item>
|
||||
<item> AS_DIRNAME </item>
|
||||
<item> AS_ECHO </item>
|
||||
<item> AS_ECHO_N </item>
|
||||
<item> AS_ESCAPE </item>
|
||||
<item> AS_EXIT </item>
|
||||
<item> AS_HELP_STRING </item>
|
||||
<item> AS_IF </item>
|
||||
<item> AS_INIT </item>
|
||||
<item> AS_INIT_GENERATED </item>
|
||||
<item> AS_LINENO_PREPARE </item>
|
||||
<item> AS_LITERAL_IF </item>
|
||||
<item> AS_LITERAL_WORD_IF </item>
|
||||
<item> AS_ME_PREPARE </item>
|
||||
<item> AS_MESSAGE_FD </item>
|
||||
<item> AS_MESSAGE_LOG_FD </item>
|
||||
<item> AS_MKDIR_P </item>
|
||||
<item> AS_ORIGINAL_STDIN_FD </item>
|
||||
<item> AS_SET_CATFILE </item>
|
||||
<item> AS_SET_STATUS </item>
|
||||
<item> AS_SHELL_SANITIZE </item>
|
||||
<item> AS_TMPDIR </item>
|
||||
<item> AS_TR_CPP </item>
|
||||
<item> AS_TR_SH </item>
|
||||
<item> AS_UNSET </item>
|
||||
<item> AS_VAR_APPEND </item>
|
||||
<item> AS_VAR_ARITH </item>
|
||||
<item> AS_VAR_COPY </item>
|
||||
<item> AS_VAR_IF </item>
|
||||
<item> AS_VAR_POPDEF </item>
|
||||
<item> AS_VAR_PUSHDEF </item>
|
||||
<item> AS_VAR_SET </item>
|
||||
<item> AS_VAR_SET_IF </item>
|
||||
<item> AS_VAR_TEST_SET </item>
|
||||
<item> AS_VERSION_COMPARE </item>
|
||||
<item> m4_append </item>
|
||||
<item> m4_append_uniq </item>
|
||||
<item> m4_append_uniq_w </item>
|
||||
<item> m4_apply </item>
|
||||
<item> m4_argn </item>
|
||||
<item> m4_assert </item>
|
||||
<item> m4_bmatch </item>
|
||||
<item> m4_bpatsubst </item>
|
||||
<item> m4_bpatsubsts </item>
|
||||
<item> m4_bregexp </item>
|
||||
<item> m4_builtin </item>
|
||||
<item> m4_car </item>
|
||||
<item> m4_case </item>
|
||||
<item> m4_cdr </item>
|
||||
<item> m4_changecom </item>
|
||||
<item> m4_changequote </item>
|
||||
<item> m4_chomp </item>
|
||||
<item> m4_chomp_all </item>
|
||||
<item> m4_cleardivert </item>
|
||||
<item> m4_cmp </item>
|
||||
<item> m4_combine </item>
|
||||
<item> m4_cond </item>
|
||||
<item> m4_copy </item>
|
||||
<item> m4_copy_force </item>
|
||||
<item> m4_count </item>
|
||||
<item> m4_curry </item>
|
||||
<item> m4_debugfile </item>
|
||||
<item> m4_debugmode </item>
|
||||
<item> m4_decr </item>
|
||||
<item> m4_default </item>
|
||||
<item> m4_default_nblank </item>
|
||||
<item> m4_default_nblank_quoted </item>
|
||||
<item> m4_default_quoted </item>
|
||||
<item> m4_define </item>
|
||||
<item> m4_define_default </item>
|
||||
<item> m4_defn </item>
|
||||
<item> m4_divert </item>
|
||||
<item> m4_divert_once </item>
|
||||
<item> m4_divert_pop </item>
|
||||
<item> m4_divert_push </item>
|
||||
<item> m4_divert_text </item>
|
||||
<item> m4_divnum </item>
|
||||
<item> m4_do </item>
|
||||
<item> m4_dquote </item>
|
||||
<item> m4_dquote_elt </item>
|
||||
<item> m4_dumpdef </item>
|
||||
<item> m4_dumpdefs </item>
|
||||
<item> m4_echo </item>
|
||||
<item> m4_errprint </item>
|
||||
<item> m4_errprintn </item>
|
||||
<item> m4_escape </item>
|
||||
<item> m4_esyscmd </item>
|
||||
<item> m4_esyscmd_s </item>
|
||||
<item> m4_eval </item>
|
||||
<item> m4_exit </item>
|
||||
<item> m4_expand </item>
|
||||
<item> m4_fatal </item>
|
||||
<item> m4_flatten </item>
|
||||
<item> m4_for </item>
|
||||
<item> m4_foreach </item>
|
||||
<item> m4_foreach_w </item>
|
||||
<item> m4_format </item>
|
||||
<item> m4_if </item>
|
||||
<item> m4_ifblank </item>
|
||||
<item> m4_ifdef </item>
|
||||
<item> m4_ifnblank </item>
|
||||
<item> m4_ifndef </item>
|
||||
<item> m4_ifset </item>
|
||||
<item> m4_ifval </item>
|
||||
<item> m4_ifvaln </item>
|
||||
<item> m4_ignore </item>
|
||||
<item> m4_include </item>
|
||||
<item> m4_incr </item>
|
||||
<item> m4_index </item>
|
||||
<item> m4_indir </item>
|
||||
<item> m4_init </item>
|
||||
<item> m4_join </item>
|
||||
<item> m4_joinall </item>
|
||||
<item> m4_len </item>
|
||||
<item> m4_list_cmp </item>
|
||||
<item> m4_location </item>
|
||||
<item> m4_make_list </item>
|
||||
<item> m4_maketemp </item>
|
||||
<item> m4_map </item>
|
||||
<item> m4_map_args </item>
|
||||
<item> m4_map_args_pair </item>
|
||||
<item> m4_map_args_sep </item>
|
||||
<item> m4_map_args_w </item>
|
||||
<item> m4_map_sep </item>
|
||||
<item> m4_mapall </item>
|
||||
<item> m4_mapall_sep </item>
|
||||
<item> m4_max </item>
|
||||
<item> m4_min </item>
|
||||
<item> m4_mkstemp </item>
|
||||
<item> m4_n </item>
|
||||
<item> m4_newline </item>
|
||||
<item> m4_normalize </item>
|
||||
<item> m4_pattern_allow </item>
|
||||
<item> m4_pattern_forbid </item>
|
||||
<item> m4_popdef </item>
|
||||
<item> m4_pushdef </item>
|
||||
<item> m4_quote </item>
|
||||
<item> m4_re_escape </item>
|
||||
<item> m4_rename </item>
|
||||
<item> m4_rename_force </item>
|
||||
<item> m4_reverse </item>
|
||||
<item> m4_set_add </item>
|
||||
<item> m4_set_add_all </item>
|
||||
<item> m4_set_contains </item>
|
||||
<item> m4_set_contents </item>
|
||||
<item> m4_set_delete </item>
|
||||
<item> m4_set_difference </item>
|
||||
<item> m4_set_dump </item>
|
||||
<item> m4_set_empty </item>
|
||||
<item> m4_set_foreach </item>
|
||||
<item> m4_set_intersection </item>
|
||||
<item> m4_set_list </item>
|
||||
<item> m4_set_listc </item>
|
||||
<item> m4_set_map </item>
|
||||
<item> m4_set_map_sep </item>
|
||||
<item> m4_set_remove </item>
|
||||
<item> m4_set_size </item>
|
||||
<item> m4_set_union </item>
|
||||
<item> m4_shift </item>
|
||||
<item> m4_shift2 </item>
|
||||
<item> m4_shift3 </item>
|
||||
<item> m4_shiftn </item>
|
||||
<item> m4_sign </item>
|
||||
<item> m4_sinclude </item>
|
||||
<item> m4_split </item>
|
||||
<item> m4_stack_foreach </item>
|
||||
<item> m4_stack_foreach_lifo </item>
|
||||
<item> m4_stack_foreach_sep </item>
|
||||
<item> m4_stack_foreach_sep_lifo </item>
|
||||
<item> m4_strip </item>
|
||||
<item> m4_substr </item>
|
||||
<item> m4_syscmd </item>
|
||||
<item> m4_sysval </item>
|
||||
<item> m4_text_box </item>
|
||||
<item> m4_text_wrap </item>
|
||||
<item> m4_tolower </item>
|
||||
<item> m4_toupper </item>
|
||||
<item> m4_traceoff </item>
|
||||
<item> m4_traceon </item>
|
||||
<item> m4_translit </item>
|
||||
<item> m4_undefine </item>
|
||||
<item> m4_undivert </item>
|
||||
<item> m4_unquote </item>
|
||||
<item> m4_version_compare </item>
|
||||
<item> m4_version_prereq </item>
|
||||
<item> m4_warn </item>
|
||||
<item> m4_wrap </item>
|
||||
<item> m4_wrap_lifo </item>
|
||||
</list>
|
||||
|
||||
<!-- Autotest Macro Index -->
|
||||
<list name="autotest_macro">
|
||||
<item> AT_ARG_OPTION </item>
|
||||
<item> AT_ARG_OPTION_ARG </item>
|
||||
<item> AT_BANNER </item>
|
||||
<item> AT_CAPTURE_FILE </item>
|
||||
<item> AT_CHECK </item>
|
||||
<item> AT_CHECK_EUNIT </item>
|
||||
<item> AT_CHECK_UNQUOTED </item>
|
||||
<item> AT_CLEANUP </item>
|
||||
<item> AT_COLOR_TESTS </item>
|
||||
<item> AT_COPYRIGHT </item>
|
||||
<item> AT_DATA </item>
|
||||
<item> AT_FAIL_IF </item>
|
||||
<item> AT_INIT </item>
|
||||
<item> AT_KEYWORDS </item>
|
||||
<item> AT_PACKAGE_BUGREPORT </item>
|
||||
<item> AT_PACKAGE_NAME </item>
|
||||
<item> AT_PACKAGE_STRING </item>
|
||||
<item> AT_PACKAGE_TARNAME </item>
|
||||
<item> AT_PACKAGE_URL </item>
|
||||
<item> AT_PACKAGE_VERSION </item>
|
||||
<item> AT_SETUP </item>
|
||||
<item> AT_SKIP_IF </item>
|
||||
<item> AT_TESTED </item>
|
||||
<item> AT_XFAIL_IF </item>
|
||||
</list>
|
||||
|
||||
<list name="libtool">
|
||||
<item> LT_PREREQ </item>
|
||||
<item> LT_LANG </item>
|
||||
<item> LT_INIT </item>
|
||||
<item> LTDL_INIT </item>
|
||||
<item> LT_CONFIG_LTDL_DIR </item>
|
||||
</list>
|
||||
|
||||
<list name="pkgconfig">
|
||||
<item> PKG_CHECK_MODULES </item>
|
||||
<item> PKG_PROG_PKG_CONFIG </item>
|
||||
<item> PKG_CHECK_EXISTS </item>
|
||||
</list>
|
||||
|
||||
<contexts>
|
||||
<context attribute="Normal Text" lineEndContext="#stay" name="Default">
|
||||
<!-- <IncludeRules context="##Bash" /> -->
|
||||
<keyword attribute="Keyword" context="#stay" String="keywords" />
|
||||
<RegExpr attribute="Builtin" context="#stay" String="\.(?=\s)" />
|
||||
<keyword attribute="Builtin" context="#stay" String="builtins" />
|
||||
<keyword attribute="Boolean" context="#stay" String="bools" />
|
||||
<!-- Autoconf Macros -->
|
||||
<keyword attribute="M4 Sugar Macros" context="#stay" String="m4sugar" />
|
||||
<!-- Autotest Macro Index -->
|
||||
<keyword attribute="Autotest Macros" context="#stay" String="autotest_macro" />
|
||||
<!-- Other Macros -->
|
||||
<keyword attribute="pkg-config Macros" context="#stay" String="pkgconfig" />
|
||||
<!-- libtool Macros -->
|
||||
<keyword attribute="Libtool Macros" context="#stay" String="libtool" />
|
||||
<!-- Autoconf Macros -->
|
||||
<RegExpr attribute="Autoconf Macros" context="#stay" String="\bAC_[A-Z0-9_]+\b" insensitive="false" endRegion="BeginRegion" />
|
||||
<!-- Automake Macros -->
|
||||
<RegExpr attribute="Automake Macros" context="#stay" String="\bAM_[A-Z0-9_]+\b" insensitive="false" endRegion="BeginRegion" />
|
||||
<!-- Script temp Defined Macros -->
|
||||
<RegExpr attribute="Inline Macros" context="#stay" String="\bac_[a-z_]+\b" insensitive="false" endRegion="BeginRegion" />
|
||||
<RegExpr attribute="Char" context="#stay" String="'.'"/>
|
||||
<DetectChar attribute="String" context="String" char="""/>
|
||||
<AnyChar attribute="Symbol" context="#stay" String=":!%&()+,-/.*<=>|"/>
|
||||
<RegExpr attribute="Variable" context="#stay" String="\$[a-z_]+" insensitive="true" endRegion="BeginRegion" />
|
||||
<Float attribute="Float" context="#stay"/>
|
||||
<Int attribute="Decimal" context="#stay"/>
|
||||
<RegExpr attribute="Pragmas" context="#stay" String="([\s\t]+#).*$" insensitive="true" endRegion="BeginRegion" />
|
||||
<RegExpr attribute="Comment" context="#stay" String="(^#).*$" insensitive="true" endRegion="BeginRegion" />
|
||||
<RegExpr attribute="Comment" context="#stay" String="(\bdnl\s).*$" insensitive="true" endRegion="BeginRegion" />
|
||||
</context>
|
||||
<context attribute="Region Marker" lineEndContext="#pop" name="Region Marker"/>
|
||||
<context attribute="String" lineEndContext="#pop" name="String">
|
||||
<DetectChar attribute="String" context="#pop" char="""/>
|
||||
</context>
|
||||
</contexts>
|
||||
<itemDatas>
|
||||
<itemData name="Normal Text" defStyleNum="dsNormal" />
|
||||
<itemData name="Keyword" defStyleNum="dsKeyword" />
|
||||
<itemData name="Builtin" defStyleNum="dsKeyword" color="#808" />
|
||||
<itemData name="M4 Sugar Macros" defStyleNum="dsKeyword" />
|
||||
<itemData name="Autotest Macros" defStyleNum="dsKeyword" />
|
||||
<itemData name="Autoconf Macros" defStyleNum="dsKeyword" color="#0095ff" selColor="#ffffff" bold="1" />
|
||||
<itemData name="Automake Macros" defStyleNum="dsKeyword" color="#6666cc" selColor="#ffffff" bold="1" />
|
||||
<itemData name="Libtool Macros" defStyleNum="dsKeyword" color="#6666cc" selColor="#ffffff" bold="1" />
|
||||
<itemData name="Inline Macros" defStyleNum="dsKeyword" color="#6666cc" selColor="#ffffff" />
|
||||
<itemData name="pkg-config Macros" defStyleNum="dsKeyword" />
|
||||
<itemData name="Boolean" defStyleNum="dsOthers" />
|
||||
<itemData name="Variable" defStyleNum="dsOthers" />
|
||||
<itemData name="Decimal" defStyleNum="dsDecVal" />
|
||||
<itemData name="Float" defStyleNum="dsFloat" />
|
||||
<itemData name="Char" defStyleNum="dsChar" />
|
||||
<itemData name="String" defStyleNum="dsString" />
|
||||
<itemData name="Pragmas" defStyleNum="dsOthers" color="#00C000" />
|
||||
<itemData name="Comment" defStyleNum="dsComment" />
|
||||
<itemData name="Symbol" defStyleNum="dsNormal"/>
|
||||
<itemData name="Region Marker" defStyleNum="dsRegionMarker" />
|
||||
</itemDatas>
|
||||
</highlighting>
|
||||
<general>
|
||||
<comments>
|
||||
<comment name="singleLine" start="dnl" />
|
||||
<comment name="multiLine" start="/*" end="*/" />
|
||||
</comments>
|
||||
<keywords casesensitive="0" />
|
||||
</general>
|
||||
</language>
|
27
src/libs/3rdparty/syntax-highlighting/data/syntax/comments.xml
vendored
Normal file
27
src/libs/3rdparty/syntax-highlighting/data/syntax/comments.xml
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE language SYSTEM "language.dtd">
|
||||
<language
|
||||
version="1"
|
||||
kateversion="5.0"
|
||||
name="Comments"
|
||||
section="Other"
|
||||
extensions=""
|
||||
mimetype=""
|
||||
author="Alex Turbov (i.zaufi@gmail.com)"
|
||||
license="MIT"
|
||||
hidden="true"
|
||||
>
|
||||
<highlighting>
|
||||
<contexts>
|
||||
<context name="Normal" attribute="Comment" lineEndContext="#pop">
|
||||
<IncludeRules context="##Alerts" />
|
||||
<IncludeRules context="##Modelines" />
|
||||
<IncludeRules context="##SPDX-Comments" />
|
||||
</context>
|
||||
</contexts>
|
||||
<itemDatas>
|
||||
<itemData name="Comment" defStyleNum="dsComment" />
|
||||
</itemDatas>
|
||||
</highlighting>
|
||||
</language>
|
||||
<!-- kate: indent-width 2; -->
|
560
src/libs/3rdparty/syntax-highlighting/data/syntax/spdx-comments.xml
vendored
Normal file
560
src/libs/3rdparty/syntax-highlighting/data/syntax/spdx-comments.xml
vendored
Normal file
@@ -0,0 +1,560 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE language SYSTEM "language.dtd">
|
||||
<language
|
||||
version="5"
|
||||
kateversion="3.1"
|
||||
name="SPDX-Comments"
|
||||
section="Other"
|
||||
extensions=""
|
||||
mimetype=""
|
||||
author="Alex Turbov (i.zaufi@gmail.com)"
|
||||
license="MIT"
|
||||
hidden="true"
|
||||
>
|
||||
<highlighting>
|
||||
<list name="tags">
|
||||
<item>SPDX-License-Identifier:</item>
|
||||
<item>SPDX-FileContributor:</item>
|
||||
<item>SPDX-FileCopyrightText:</item>
|
||||
<item>SPDX-LicenseInfoInFile:</item>
|
||||
</list>
|
||||
|
||||
<list name="operators">
|
||||
<item>AND</item>
|
||||
<item>OR</item>
|
||||
<item>WITH</item>
|
||||
</list>
|
||||
|
||||
<list name="licenses">
|
||||
<item>0BSD</item>
|
||||
<item>AAL</item>
|
||||
<item>ADSL</item>
|
||||
<item>AFL-1.1</item>
|
||||
<item>AFL-1.2</item>
|
||||
<item>AFL-2.0</item>
|
||||
<item>AFL-2.1</item>
|
||||
<item>AFL-3.0</item>
|
||||
<item>AGPL-1.0-only</item>
|
||||
<item>AGPL-1.0-or-later</item>
|
||||
<item>AGPL-3.0-only</item>
|
||||
<item>AGPL-3.0-or-later</item>
|
||||
<item>AMDPLPA</item>
|
||||
<item>AML</item>
|
||||
<item>AMPAS</item>
|
||||
<item>ANTLR-PD</item>
|
||||
<item>ANTLR-PD-fallback</item>
|
||||
<item>APAFML</item>
|
||||
<item>APL-1.0</item>
|
||||
<item>APSL-1.0</item>
|
||||
<item>APSL-1.1</item>
|
||||
<item>APSL-1.2</item>
|
||||
<item>APSL-2.0</item>
|
||||
<item>Abstyles</item>
|
||||
<item>Adobe-2006</item>
|
||||
<item>Adobe-Glyph</item>
|
||||
<item>Afmparse</item>
|
||||
<item>Aladdin</item>
|
||||
<item>Apache-1.0</item>
|
||||
<item>Apache-1.1</item>
|
||||
<item>Apache-2.0</item>
|
||||
<item>Artistic-1.0</item>
|
||||
<item>Artistic-1.0-Perl</item>
|
||||
<item>Artistic-1.0-cl8</item>
|
||||
<item>Artistic-2.0</item>
|
||||
<item>BSD-1-Clause</item>
|
||||
<item>BSD-2-Clause</item>
|
||||
<item>BSD-2-Clause-Patent</item>
|
||||
<item>BSD-2-Clause-Views</item>
|
||||
<item>BSD-3-Clause</item>
|
||||
<item>BSD-3-Clause-Attribution</item>
|
||||
<item>BSD-3-Clause-Clear</item>
|
||||
<item>BSD-3-Clause-LBNL</item>
|
||||
<item>BSD-3-Clause-No-Nuclear-License</item>
|
||||
<item>BSD-3-Clause-No-Nuclear-License-2014</item>
|
||||
<item>BSD-3-Clause-No-Nuclear-Warranty</item>
|
||||
<item>BSD-3-Clause-Open-MPI</item>
|
||||
<item>BSD-4-Clause</item>
|
||||
<item>BSD-4-Clause-UC</item>
|
||||
<item>BSD-Protection</item>
|
||||
<item>BSD-Source-Code</item>
|
||||
<item>BSL-1.0</item>
|
||||
<item>BUSL-1.1</item>
|
||||
<item>Bahyph</item>
|
||||
<item>Barr</item>
|
||||
<item>Beerware</item>
|
||||
<item>BitTorrent-1.0</item>
|
||||
<item>BitTorrent-1.1</item>
|
||||
<item>BlueOak-1.0.0</item>
|
||||
<item>Borceux</item>
|
||||
<item>CAL-1.0</item>
|
||||
<item>CAL-1.0-Combined-Work-Exception</item>
|
||||
<item>CATOSL-1.1</item>
|
||||
<item>CC-BY-1.0</item>
|
||||
<item>CC-BY-2.0</item>
|
||||
<item>CC-BY-2.5</item>
|
||||
<item>CC-BY-3.0</item>
|
||||
<item>CC-BY-3.0-AT</item>
|
||||
<item>CC-BY-3.0-US</item>
|
||||
<item>CC-BY-4.0</item>
|
||||
<item>CC-BY-NC-1.0</item>
|
||||
<item>CC-BY-NC-2.0</item>
|
||||
<item>CC-BY-NC-2.5</item>
|
||||
<item>CC-BY-NC-3.0</item>
|
||||
<item>CC-BY-NC-4.0</item>
|
||||
<item>CC-BY-NC-ND-1.0</item>
|
||||
<item>CC-BY-NC-ND-2.0</item>
|
||||
<item>CC-BY-NC-ND-2.5</item>
|
||||
<item>CC-BY-NC-ND-3.0</item>
|
||||
<item>CC-BY-NC-ND-3.0-IGO</item>
|
||||
<item>CC-BY-NC-ND-4.0</item>
|
||||
<item>CC-BY-NC-SA-1.0</item>
|
||||
<item>CC-BY-NC-SA-2.0</item>
|
||||
<item>CC-BY-NC-SA-2.5</item>
|
||||
<item>CC-BY-NC-SA-3.0</item>
|
||||
<item>CC-BY-NC-SA-4.0</item>
|
||||
<item>CC-BY-ND-1.0</item>
|
||||
<item>CC-BY-ND-2.0</item>
|
||||
<item>CC-BY-ND-2.5</item>
|
||||
<item>CC-BY-ND-3.0</item>
|
||||
<item>CC-BY-ND-4.0</item>
|
||||
<item>CC-BY-SA-1.0</item>
|
||||
<item>CC-BY-SA-2.0</item>
|
||||
<item>CC-BY-SA-2.0-UK</item>
|
||||
<item>CC-BY-SA-2.5</item>
|
||||
<item>CC-BY-SA-3.0</item>
|
||||
<item>CC-BY-SA-3.0-AT</item>
|
||||
<item>CC-BY-SA-4.0</item>
|
||||
<item>CC-PDDC</item>
|
||||
<item>CC0-1.0</item>
|
||||
<item>CDDL-1.0</item>
|
||||
<item>CDDL-1.1</item>
|
||||
<item>CDLA-Permissive-1.0</item>
|
||||
<item>CDLA-Sharing-1.0</item>
|
||||
<item>CECILL-1.0</item>
|
||||
<item>CECILL-1.1</item>
|
||||
<item>CECILL-2.0</item>
|
||||
<item>CECILL-2.1</item>
|
||||
<item>CECILL-B</item>
|
||||
<item>CECILL-C</item>
|
||||
<item>CERN-OHL-1.1</item>
|
||||
<item>CERN-OHL-1.2</item>
|
||||
<item>CERN-OHL-P-2.0</item>
|
||||
<item>CERN-OHL-S-2.0</item>
|
||||
<item>CERN-OHL-W-2.0</item>
|
||||
<item>CNRI-Jython</item>
|
||||
<item>CNRI-Python</item>
|
||||
<item>CNRI-Python-GPL-Compatible</item>
|
||||
<item>CPAL-1.0</item>
|
||||
<item>CPL-1.0</item>
|
||||
<item>CPOL-1.02</item>
|
||||
<item>CUA-OPL-1.0</item>
|
||||
<item>Caldera</item>
|
||||
<item>ClArtistic</item>
|
||||
<item>Condor-1.1</item>
|
||||
<item>Crossword</item>
|
||||
<item>CrystalStacker</item>
|
||||
<item>Cube</item>
|
||||
<item>D-FSL-1.0</item>
|
||||
<item>DOC</item>
|
||||
<item>DSDP</item>
|
||||
<item>Dotseqn</item>
|
||||
<item>ECL-1.0</item>
|
||||
<item>ECL-2.0</item>
|
||||
<item>EFL-1.0</item>
|
||||
<item>EFL-2.0</item>
|
||||
<item>EPICS</item>
|
||||
<item>EPL-1.0</item>
|
||||
<item>EPL-2.0</item>
|
||||
<item>EUDatagrid</item>
|
||||
<item>EUPL-1.0</item>
|
||||
<item>EUPL-1.1</item>
|
||||
<item>EUPL-1.2</item>
|
||||
<item>Entessa</item>
|
||||
<item>ErlPL-1.1</item>
|
||||
<item>Eurosym</item>
|
||||
<item>FSFAP</item>
|
||||
<item>FSFUL</item>
|
||||
<item>FSFULLR</item>
|
||||
<item>FTL</item>
|
||||
<item>Fair</item>
|
||||
<item>Frameworx-1.0</item>
|
||||
<item>FreeImage</item>
|
||||
<item>GFDL-1.1-invariants-only</item>
|
||||
<item>GFDL-1.1-invariants-or-later</item>
|
||||
<item>GFDL-1.1-no-invariants-only</item>
|
||||
<item>GFDL-1.1-no-invariants-or-later</item>
|
||||
<item>GFDL-1.1-only</item>
|
||||
<item>GFDL-1.1-or-later</item>
|
||||
<item>GFDL-1.2-invariants-only</item>
|
||||
<item>GFDL-1.2-invariants-or-later</item>
|
||||
<item>GFDL-1.2-no-invariants-only</item>
|
||||
<item>GFDL-1.2-no-invariants-or-later</item>
|
||||
<item>GFDL-1.2-only</item>
|
||||
<item>GFDL-1.2-or-later</item>
|
||||
<item>GFDL-1.3-invariants-only</item>
|
||||
<item>GFDL-1.3-invariants-or-later</item>
|
||||
<item>GFDL-1.3-no-invariants-only</item>
|
||||
<item>GFDL-1.3-no-invariants-or-later</item>
|
||||
<item>GFDL-1.3-only</item>
|
||||
<item>GFDL-1.3-or-later</item>
|
||||
<item>GL2PS</item>
|
||||
<item>GLWTPL</item>
|
||||
<item>GPL-1.0-only</item>
|
||||
<item>GPL-1.0-or-later</item>
|
||||
<item>GPL-2.0-only</item>
|
||||
<item>GPL-2.0-or-later</item>
|
||||
<item>GPL-3.0-only</item>
|
||||
<item>GPL-3.0-or-later</item>
|
||||
<item>Giftware</item>
|
||||
<item>Glide</item>
|
||||
<item>Glulxe</item>
|
||||
<item>HPND</item>
|
||||
<item>HPND-sell-variant</item>
|
||||
<item>HTMLTIDY</item>
|
||||
<item>HaskellReport</item>
|
||||
<item>Hippocratic-2.1</item>
|
||||
<item>IBM-pibs</item>
|
||||
<item>ICU</item>
|
||||
<item>IJG</item>
|
||||
<item>IPA</item>
|
||||
<item>IPL-1.0</item>
|
||||
<item>ISC</item>
|
||||
<item>ImageMagick</item>
|
||||
<item>Imlib2</item>
|
||||
<item>Info-ZIP</item>
|
||||
<item>Intel</item>
|
||||
<item>Intel-ACPI</item>
|
||||
<item>Interbase-1.0</item>
|
||||
<item>JPNIC</item>
|
||||
<item>JSON</item>
|
||||
<item>JasPer-2.0</item>
|
||||
<item>LAL-1.2</item>
|
||||
<item>LAL-1.3</item>
|
||||
<item>LGPL-2.0-only</item>
|
||||
<item>LGPL-2.0-or-later</item>
|
||||
<item>LGPL-2.1-only</item>
|
||||
<item>LGPL-2.1-or-later</item>
|
||||
<item>LGPL-3.0-only</item>
|
||||
<item>LGPL-3.0-or-later</item>
|
||||
<item>LGPLLR</item>
|
||||
<item>LPL-1.0</item>
|
||||
<item>LPL-1.02</item>
|
||||
<item>LPPL-1.0</item>
|
||||
<item>LPPL-1.1</item>
|
||||
<item>LPPL-1.2</item>
|
||||
<item>LPPL-1.3a</item>
|
||||
<item>LPPL-1.3c</item>
|
||||
<item>Latex2e</item>
|
||||
<item>Leptonica</item>
|
||||
<item>LiLiQ-P-1.1</item>
|
||||
<item>LiLiQ-R-1.1</item>
|
||||
<item>LiLiQ-Rplus-1.1</item>
|
||||
<item>Libpng</item>
|
||||
<item>Linux-OpenIB</item>
|
||||
<item>MIT</item>
|
||||
<item>MIT-0</item>
|
||||
<item>MIT-CMU</item>
|
||||
<item>MIT-advertising</item>
|
||||
<item>MIT-enna</item>
|
||||
<item>MIT-feh</item>
|
||||
<item>MIT-open-group</item>
|
||||
<item>MITNFA</item>
|
||||
<item>MPL-1.0</item>
|
||||
<item>MPL-1.1</item>
|
||||
<item>MPL-2.0</item>
|
||||
<item>MPL-2.0-no-copyleft-exception</item>
|
||||
<item>MS-PL</item>
|
||||
<item>MS-RL</item>
|
||||
<item>MTLL</item>
|
||||
<item>MakeIndex</item>
|
||||
<item>MirOS</item>
|
||||
<item>Motosoto</item>
|
||||
<item>MulanPSL-1.0</item>
|
||||
<item>MulanPSL-2.0</item>
|
||||
<item>Multics</item>
|
||||
<item>Mup</item>
|
||||
<item>NASA-1.3</item>
|
||||
<item>NBPL-1.0</item>
|
||||
<item>NCGL-UK-2.0</item>
|
||||
<item>NCSA</item>
|
||||
<item>NGPL</item>
|
||||
<item>NIST-PD</item>
|
||||
<item>NIST-PD-fallback</item>
|
||||
<item>NLOD-1.0</item>
|
||||
<item>NLPL</item>
|
||||
<item>NOSL</item>
|
||||
<item>NPL-1.0</item>
|
||||
<item>NPL-1.1</item>
|
||||
<item>NPOSL-3.0</item>
|
||||
<item>NRL</item>
|
||||
<item>NTP</item>
|
||||
<item>NTP-0</item>
|
||||
<item>Naumen</item>
|
||||
<item>Net-SNMP</item>
|
||||
<item>NetCDF</item>
|
||||
<item>Newsletr</item>
|
||||
<item>Nokia</item>
|
||||
<item>Noweb</item>
|
||||
<item>O-UDA-1.0</item>
|
||||
<item>OCCT-PL</item>
|
||||
<item>OCLC-2.0</item>
|
||||
<item>ODC-By-1.0</item>
|
||||
<item>ODbL-1.0</item>
|
||||
<item>OFL-1.0</item>
|
||||
<item>OFL-1.0-RFN</item>
|
||||
<item>OFL-1.0-no-RFN</item>
|
||||
<item>OFL-1.1</item>
|
||||
<item>OFL-1.1-RFN</item>
|
||||
<item>OFL-1.1-no-RFN</item>
|
||||
<item>OGC-1.0</item>
|
||||
<item>OGL-Canada-2.0</item>
|
||||
<item>OGL-UK-1.0</item>
|
||||
<item>OGL-UK-2.0</item>
|
||||
<item>OGL-UK-3.0</item>
|
||||
<item>OGTSL</item>
|
||||
<item>OLDAP-1.1</item>
|
||||
<item>OLDAP-1.2</item>
|
||||
<item>OLDAP-1.3</item>
|
||||
<item>OLDAP-1.4</item>
|
||||
<item>OLDAP-2.0</item>
|
||||
<item>OLDAP-2.0.1</item>
|
||||
<item>OLDAP-2.1</item>
|
||||
<item>OLDAP-2.2</item>
|
||||
<item>OLDAP-2.2.1</item>
|
||||
<item>OLDAP-2.2.2</item>
|
||||
<item>OLDAP-2.3</item>
|
||||
<item>OLDAP-2.4</item>
|
||||
<item>OLDAP-2.5</item>
|
||||
<item>OLDAP-2.6</item>
|
||||
<item>OLDAP-2.7</item>
|
||||
<item>OLDAP-2.8</item>
|
||||
<item>OML</item>
|
||||
<item>OPL-1.0</item>
|
||||
<item>OSET-PL-2.1</item>
|
||||
<item>OSL-1.0</item>
|
||||
<item>OSL-1.1</item>
|
||||
<item>OSL-2.0</item>
|
||||
<item>OSL-2.1</item>
|
||||
<item>OSL-3.0</item>
|
||||
<item>OpenSSL</item>
|
||||
<item>PDDL-1.0</item>
|
||||
<item>PHP-3.0</item>
|
||||
<item>PHP-3.01</item>
|
||||
<item>PSF-2.0</item>
|
||||
<item>Parity-6.0.0</item>
|
||||
<item>Parity-7.0.0</item>
|
||||
<item>Plexus</item>
|
||||
<item>PolyForm-Noncommercial-1.0.0</item>
|
||||
<item>PolyForm-Small-Business-1.0.0</item>
|
||||
<item>PostgreSQL</item>
|
||||
<item>Python-2.0</item>
|
||||
<item>QPL-1.0</item>
|
||||
<item>Qhull</item>
|
||||
<item>RHeCos-1.1</item>
|
||||
<item>RPL-1.1</item>
|
||||
<item>RPL-1.5</item>
|
||||
<item>RPSL-1.0</item>
|
||||
<item>RSA-MD</item>
|
||||
<item>RSCPL</item>
|
||||
<item>Rdisc</item>
|
||||
<item>Ruby</item>
|
||||
<item>SAX-PD</item>
|
||||
<item>SCEA</item>
|
||||
<item>SGI-B-1.0</item>
|
||||
<item>SGI-B-1.1</item>
|
||||
<item>SGI-B-2.0</item>
|
||||
<item>SHL-0.5</item>
|
||||
<item>SHL-0.51</item>
|
||||
<item>SISSL</item>
|
||||
<item>SISSL-1.2</item>
|
||||
<item>SMLNJ</item>
|
||||
<item>SMPPL</item>
|
||||
<item>SNIA</item>
|
||||
<item>SPL-1.0</item>
|
||||
<item>SSH-OpenSSH</item>
|
||||
<item>SSH-short</item>
|
||||
<item>SSPL-1.0</item>
|
||||
<item>SWL</item>
|
||||
<item>Saxpath</item>
|
||||
<item>Sendmail</item>
|
||||
<item>Sendmail-8.23</item>
|
||||
<item>SimPL-2.0</item>
|
||||
<item>Sleepycat</item>
|
||||
<item>Spencer-86</item>
|
||||
<item>Spencer-94</item>
|
||||
<item>Spencer-99</item>
|
||||
<item>SugarCRM-1.1.3</item>
|
||||
<item>TAPR-OHL-1.0</item>
|
||||
<item>TCL</item>
|
||||
<item>TCP-wrappers</item>
|
||||
<item>TMate</item>
|
||||
<item>TORQUE-1.1</item>
|
||||
<item>TOSL</item>
|
||||
<item>TU-Berlin-1.0</item>
|
||||
<item>TU-Berlin-2.0</item>
|
||||
<item>UCL-1.0</item>
|
||||
<item>UPL-1.0</item>
|
||||
<item>Unicode-DFS-2015</item>
|
||||
<item>Unicode-DFS-2016</item>
|
||||
<item>Unicode-TOU</item>
|
||||
<item>Unlicense</item>
|
||||
<item>VOSTROM</item>
|
||||
<item>VSL-1.0</item>
|
||||
<item>Vim</item>
|
||||
<item>W3C</item>
|
||||
<item>W3C-19980720</item>
|
||||
<item>W3C-20150513</item>
|
||||
<item>WTFPL</item>
|
||||
<item>Watcom-1.0</item>
|
||||
<item>Wsuipa</item>
|
||||
<item>X11</item>
|
||||
<item>XFree86-1.1</item>
|
||||
<item>XSkat</item>
|
||||
<item>Xerox</item>
|
||||
<item>Xnet</item>
|
||||
<item>YPL-1.0</item>
|
||||
<item>YPL-1.1</item>
|
||||
<item>ZPL-1.1</item>
|
||||
<item>ZPL-2.0</item>
|
||||
<item>ZPL-2.1</item>
|
||||
<item>Zed</item>
|
||||
<item>Zend-2.0</item>
|
||||
<item>Zimbra-1.3</item>
|
||||
<item>Zimbra-1.4</item>
|
||||
<item>Zlib</item>
|
||||
<item>blessing</item>
|
||||
<item>bzip2-1.0.5</item>
|
||||
<item>bzip2-1.0.6</item>
|
||||
<item>copyleft-next-0.3.0</item>
|
||||
<item>copyleft-next-0.3.1</item>
|
||||
<item>curl</item>
|
||||
<item>diffmark</item>
|
||||
<item>dvipdfm</item>
|
||||
<item>eGenix</item>
|
||||
<item>etalab-2.0</item>
|
||||
<item>gSOAP-1.3b</item>
|
||||
<item>gnuplot</item>
|
||||
<item>iMatix</item>
|
||||
<item>libpng-2.0</item>
|
||||
<item>libselinux-1.0</item>
|
||||
<item>libtiff</item>
|
||||
<item>mpich2</item>
|
||||
<item>psfrag</item>
|
||||
<item>psutils</item>
|
||||
<item>xinetd</item>
|
||||
<item>xpp</item>
|
||||
<item>zlib-acknowledgement</item>
|
||||
</list>
|
||||
|
||||
<list name="deprecated-licenses">
|
||||
<item>AGPL-1.0</item>
|
||||
<item>AGPL-3.0</item>
|
||||
<item>BSD-2-Clause-FreeBSD</item>
|
||||
<item>BSD-2-Clause-NetBSD</item>
|
||||
<item>GFDL-1.1</item>
|
||||
<item>GFDL-1.2</item>
|
||||
<item>GFDL-1.3</item>
|
||||
<item>GPL-1.0</item>
|
||||
<item>GPL-2.0</item>
|
||||
<item>GPL-2.0-with-GCC-exception</item>
|
||||
<item>GPL-2.0-with-autoconf-exception</item>
|
||||
<item>GPL-2.0-with-bison-exception</item>
|
||||
<item>GPL-2.0-with-classpath-exception</item>
|
||||
<item>GPL-2.0-with-font-exception</item>
|
||||
<item>GPL-3.0</item>
|
||||
<item>GPL-3.0-with-GCC-exception</item>
|
||||
<item>GPL-3.0-with-autoconf-exception</item>
|
||||
<item>LGPL-2.0</item>
|
||||
<item>LGPL-2.1</item>
|
||||
<item>LGPL-3.0</item>
|
||||
<item>Nunit</item>
|
||||
<item>StandardML-NJ</item>
|
||||
<item>eCos-2.0</item>
|
||||
<item>wxWindows</item>
|
||||
</list>
|
||||
|
||||
<list name="exceptions">
|
||||
<item>GCC-exception-2.0</item>
|
||||
<item>openvpn-openssl-exception</item>
|
||||
<item>GPL-3.0-linking-exception</item>
|
||||
<item>Fawkes-Runtime-exception</item>
|
||||
<item>u-boot-exception-2.0</item>
|
||||
<item>PS-or-PDF-font-exception-20170817</item>
|
||||
<item>gnu-javamail-exception</item>
|
||||
<item>LGPL-3.0-linking-exception</item>
|
||||
<item>DigiRule-FOSS-exception</item>
|
||||
<item>LLVM-exception</item>
|
||||
<item>Linux-syscall-note</item>
|
||||
<item>GPL-3.0-linking-source-exception</item>
|
||||
<item>Qwt-exception-1.0</item>
|
||||
<item>389-exception</item>
|
||||
<item>mif-exception</item>
|
||||
<item>eCos-exception-2.0</item>
|
||||
<item>CLISP-exception-2.0</item>
|
||||
<item>Bison-exception-2.2</item>
|
||||
<item>Libtool-exception</item>
|
||||
<item>LZMA-exception</item>
|
||||
<item>OpenJDK-assembly-exception-1.0</item>
|
||||
<item>Font-exception-2.0</item>
|
||||
<item>OCaml-LGPL-linking-exception</item>
|
||||
<item>GCC-exception-3.1</item>
|
||||
<item>Bootloader-exception</item>
|
||||
<item>SHL-2.0</item>
|
||||
<item>Classpath-exception-2.0</item>
|
||||
<item>Swift-exception</item>
|
||||
<item>Autoconf-exception-2.0</item>
|
||||
<item>FLTK-exception</item>
|
||||
<item>freertos-exception-2.0</item>
|
||||
<item>Universal-FOSS-exception-1.0</item>
|
||||
<item>WxWindows-exception-3.1</item>
|
||||
<item>OCCT-exception-1.0</item>
|
||||
<item>Autoconf-exception-3.0</item>
|
||||
<item>i2p-gpl-java-exception</item>
|
||||
<item>GPL-CC-1.0</item>
|
||||
<item>Qt-LGPL-exception-1.1</item>
|
||||
<item>SHL-2.1</item>
|
||||
<item>Qt-GPL-exception-1.0</item>
|
||||
</list>
|
||||
|
||||
<list name="deprecated-exceptions">
|
||||
<item>Nokia-Qt-exception-1.1</item>
|
||||
</list>
|
||||
|
||||
<contexts>
|
||||
|
||||
<context name="Normal" attribute="SPDX Tag" lineEndContext="#pop">
|
||||
<WordDetect String="SPDX-License-Identifier:" attribute="SPDX Tag" context="license-expression" />
|
||||
<keyword String="tags" attribute="SPDX Tag" />
|
||||
</context>
|
||||
|
||||
<context name="license-expression" attribute="SPDX Value" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
|
||||
<DetectSpaces/>
|
||||
<AnyChar String="()+" context="#stay" attribute="SPDX License Expression Operator" />
|
||||
<keyword String="licenses" context="#stay" attribute="SPDX License" />
|
||||
<keyword String="deprecated-licenses" context="#stay" attribute="SPDX Deprecated License" />
|
||||
<keyword String="exceptions" context="#stay" attribute="SPDX License Exception" />
|
||||
<keyword String="deprecated-exceptions" context="#stay" attribute="SPDX Deprecated License Exception" />
|
||||
<keyword String="operators" context="#stay" attribute="SPDX License Expression Operator" />
|
||||
<RegExpr attribute="SPDX License" context="#stay" String="\bLicenseRef-[^\s]+" />
|
||||
</context>
|
||||
|
||||
</contexts>
|
||||
|
||||
<itemDatas>
|
||||
<itemData name="SPDX Tag" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />
|
||||
<itemData name="SPDX Value" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />
|
||||
<itemData name="SPDX License" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />
|
||||
<itemData name="SPDX License Exception" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />
|
||||
<itemData name="SPDX Deprecated License" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />
|
||||
<itemData name="SPDX Deprecated License Exception" defStyleNum="dsAnnotation" italic="true" spellChecking="false" />
|
||||
<itemData name="SPDX License Expression Operator" defStyleNum="dsOperator" italic="true" spellChecking="false" />
|
||||
</itemDatas>
|
||||
|
||||
</highlighting>
|
||||
|
||||
<general>
|
||||
<keywords casesensitive="1" weakDeliminator=":-." />
|
||||
</general>
|
||||
|
||||
</language>
|
||||
<!-- kate: indent-width 2; -->
|
@@ -37,6 +37,9 @@ template<unsigned int TableCount = 0>
|
||||
class LastChangedRowId
|
||||
{
|
||||
public:
|
||||
LastChangedRowId(const LastChangedRowId &) = delete;
|
||||
LastChangedRowId &operator=(const LastChangedRowId &) = delete;
|
||||
|
||||
LastChangedRowId(DatabaseInterface &database)
|
||||
: database(database)
|
||||
|
||||
|
@@ -212,10 +212,8 @@ public:
|
||||
return resultValues;
|
||||
}
|
||||
|
||||
template <typename ResultType,
|
||||
int ResultTypeCount = 1,
|
||||
typename... QueryTypes>
|
||||
std::vector<ResultType> values(std::size_t reserveSize, const QueryTypes&... queryValues)
|
||||
template<typename ResultType, int ResultTypeCount = 1, typename... QueryTypes>
|
||||
auto values(std::size_t reserveSize, const QueryTypes &...queryValues)
|
||||
{
|
||||
BaseStatement::checkColumnCount(ResultTypeCount);
|
||||
|
||||
@@ -235,11 +233,8 @@ public:
|
||||
return resultValues;
|
||||
}
|
||||
|
||||
template <typename ResultType,
|
||||
int ResultTypeCount = 1,
|
||||
typename QueryElementType>
|
||||
std::vector<ResultType> values(std::size_t reserveSize,
|
||||
const std::vector<QueryElementType> &queryValues)
|
||||
template<typename ResultType, int ResultTypeCount = 1, typename QueryElementType>
|
||||
auto values(std::size_t reserveSize, const std::vector<QueryElementType> &queryValues)
|
||||
{
|
||||
BaseStatement::checkColumnCount(ResultTypeCount);
|
||||
|
||||
@@ -261,10 +256,8 @@ public:
|
||||
return resultValues;
|
||||
}
|
||||
|
||||
template <typename ResultType,
|
||||
int ResultTypeCount = 1,
|
||||
typename... QueryElementTypes>
|
||||
std::vector<ResultType> values(std::size_t reserveSize,
|
||||
template<typename ResultType, int ResultTypeCount = 1, typename... QueryElementTypes>
|
||||
auto values(std::size_t reserveSize,
|
||||
const std::vector<std::tuple<QueryElementTypes...>> &queryTuples)
|
||||
{
|
||||
BaseStatement::checkColumnCount(ResultTypeCount);
|
||||
@@ -288,10 +281,8 @@ public:
|
||||
return resultValues;
|
||||
}
|
||||
|
||||
template <typename ResultType,
|
||||
int ResultTypeCount = 1,
|
||||
typename... QueryTypes>
|
||||
Utils::optional<ResultType> value(const QueryTypes&... queryValues)
|
||||
template<typename ResultType, int ResultTypeCount = 1, typename... QueryTypes>
|
||||
auto value(const QueryTypes &...queryValues)
|
||||
{
|
||||
BaseStatement::checkColumnCount(ResultTypeCount);
|
||||
|
||||
@@ -309,7 +300,7 @@ public:
|
||||
}
|
||||
|
||||
template<typename Type>
|
||||
static Type toValue(Utils::SmallStringView sqlStatement, Database &database)
|
||||
static auto toValue(Utils::SmallStringView sqlStatement, Database &database)
|
||||
{
|
||||
StatementImplementation statement(sqlStatement, database);
|
||||
|
||||
|
@@ -61,7 +61,7 @@ Database::Database()
|
||||
}
|
||||
|
||||
Database::Database(Utils::PathString &&databaseFilePath, JournalMode journalMode)
|
||||
: Database(std::move(databaseFilePath), 1000ms, journalMode)
|
||||
: Database{std::move(databaseFilePath), 0ms, journalMode}
|
||||
{}
|
||||
|
||||
Database::Database(Utils::PathString &&databaseFilePath,
|
||||
@@ -89,7 +89,10 @@ void Database::open()
|
||||
{
|
||||
m_databaseBackend.open(m_databaseFilePath, m_openMode);
|
||||
m_databaseBackend.setJournalMode(m_journalMode);
|
||||
if (m_busyTimeout > 0ms)
|
||||
m_databaseBackend.setBusyTimeout(m_busyTimeout);
|
||||
else
|
||||
m_databaseBackend.registerBusyHandler();
|
||||
registerTransactionStatements();
|
||||
initializeTables();
|
||||
m_isOpen = true;
|
||||
|
@@ -44,6 +44,7 @@ using namespace std::chrono_literals;
|
||||
|
||||
class ReadStatement;
|
||||
class WriteStatement;
|
||||
class ReadWriteStatement;
|
||||
|
||||
class SQLITE_EXPORT Database final : public TransactionInterface, public DatabaseInterface
|
||||
{
|
||||
@@ -55,12 +56,13 @@ public:
|
||||
using MutexType = std::mutex;
|
||||
using ReadStatement = Sqlite::ReadStatement;
|
||||
using WriteStatement = Sqlite::WriteStatement;
|
||||
using ReadWriteStatement = Sqlite::ReadWriteStatement;
|
||||
using BusyHandler = DatabaseBackend::BusyHandler;
|
||||
|
||||
Database();
|
||||
Database(Utils::PathString &&databaseFilePath, JournalMode journalMode = JournalMode::Wal);
|
||||
Database(Utils::PathString &&databaseFilePath,
|
||||
JournalMode journalMode);
|
||||
Database(Utils::PathString &&databaseFilePath,
|
||||
std::chrono::milliseconds busyTimeout = 1000ms,
|
||||
std::chrono::milliseconds busyTimeout,
|
||||
JournalMode journalMode = JournalMode::Wal);
|
||||
~Database();
|
||||
|
||||
@@ -132,6 +134,11 @@ public:
|
||||
void setAttachedTables(const Utils::SmallStringVector &tables) override;
|
||||
void applyAndUpdateSessions() override;
|
||||
|
||||
void setBusyHandler(BusyHandler busyHandler)
|
||||
{
|
||||
m_databaseBackend.setBusyHandler(std::move(busyHandler));
|
||||
}
|
||||
|
||||
SessionChangeSets changeSets() const;
|
||||
|
||||
private:
|
||||
|
@@ -37,15 +37,24 @@
|
||||
|
||||
#include "sqlite3.h"
|
||||
|
||||
#include <chrono>
|
||||
#include <thread>
|
||||
|
||||
extern "C" {
|
||||
int sqlite3_carray_init(sqlite3 *db, char **pzErrMsg, const sqlite3_api_routines *pApi);
|
||||
}
|
||||
|
||||
namespace Sqlite {
|
||||
|
||||
using namespace std::literals;
|
||||
|
||||
DatabaseBackend::DatabaseBackend(Database &database)
|
||||
: m_database(database)
|
||||
, m_databaseHandle(nullptr)
|
||||
, m_busyHandler([](int) {
|
||||
std::this_thread::sleep_for(10ms);
|
||||
return true;
|
||||
})
|
||||
{
|
||||
}
|
||||
|
||||
@@ -197,28 +206,24 @@ void DatabaseBackend::closeWithoutException()
|
||||
}
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
int busyHandlerCallback(void *userData, int counter)
|
||||
{
|
||||
auto &&busyHandler = *static_cast<DatabaseBackend::BusyHandler *>(userData);
|
||||
|
||||
return busyHandler(counter);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
void DatabaseBackend::registerBusyHandler()
|
||||
{
|
||||
int resultCode = sqlite3_busy_handler(sqliteDatabaseHandle(), &busyHandlerCallback, nullptr);
|
||||
int resultCode = sqlite3_busy_handler(sqliteDatabaseHandle(), &busyHandlerCallback, &m_busyHandler);
|
||||
|
||||
checkIfBusyTimeoutWasSet(resultCode);
|
||||
}
|
||||
|
||||
void DatabaseBackend::registerRankingFunction()
|
||||
{
|
||||
}
|
||||
|
||||
int DatabaseBackend::busyHandlerCallback(void *, int counter)
|
||||
{
|
||||
Q_UNUSED(counter)
|
||||
#ifdef QT_DEBUG
|
||||
//qWarning() << "Busy handler invoked" << counter << "times!";
|
||||
#endif
|
||||
QThread::msleep(10);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void DatabaseBackend::checkForOpenDatabaseWhichCanBeClosed()
|
||||
{
|
||||
if (m_databaseHandle == nullptr)
|
||||
@@ -416,6 +421,12 @@ void DatabaseBackend::resetUpdateHook()
|
||||
sqlite3_update_hook(m_databaseHandle, nullptr, nullptr);
|
||||
}
|
||||
|
||||
void DatabaseBackend::setBusyHandler(DatabaseBackend::BusyHandler &&busyHandler)
|
||||
{
|
||||
m_busyHandler = std::move(busyHandler);
|
||||
registerBusyHandler();
|
||||
}
|
||||
|
||||
void DatabaseBackend::throwExceptionStatic(const char *whatHasHappens)
|
||||
{
|
||||
throw Exception(whatHasHappens);
|
||||
|
@@ -41,6 +41,8 @@ class Database;
|
||||
class SQLITE_EXPORT DatabaseBackend
|
||||
{
|
||||
public:
|
||||
using BusyHandler = std::function<bool(int count)>;
|
||||
|
||||
DatabaseBackend(Database &database);
|
||||
~DatabaseBackend();
|
||||
|
||||
@@ -90,15 +92,16 @@ public:
|
||||
void (*callback)(void *object, int, char const *database, char const *, long long rowId));
|
||||
void resetUpdateHook();
|
||||
|
||||
void setBusyHandler(BusyHandler &&busyHandler);
|
||||
|
||||
void registerBusyHandler();
|
||||
|
||||
protected:
|
||||
bool databaseIsOpen() const;
|
||||
|
||||
void setPragmaValue(Utils::SmallStringView pragma, Utils::SmallStringView value);
|
||||
Utils::SmallString pragmaValue(Utils::SmallStringView pragma);
|
||||
|
||||
void registerBusyHandler();
|
||||
void registerRankingFunction();
|
||||
static int busyHandlerCallback(void*, int counter);
|
||||
|
||||
void checkForOpenDatabaseWhichCanBeClosed();
|
||||
void checkDatabaseClosing(int resultCode);
|
||||
@@ -126,6 +129,7 @@ protected:
|
||||
private:
|
||||
Database &m_database;
|
||||
sqlite3 *m_databaseHandle;
|
||||
BusyHandler m_busyHandler;
|
||||
};
|
||||
|
||||
} // namespace Sqlite
|
||||
|
@@ -800,7 +800,7 @@ void StringAspect::setDefaultValue(const QString &val)
|
||||
void StringAspect::fromMap(const QVariantMap &map)
|
||||
{
|
||||
if (!settingsKey().isEmpty())
|
||||
BaseAspect::setValueQuietly(map.value(settingsKey()));
|
||||
BaseAspect::setValueQuietly(map.value(settingsKey(), defaultValue()));
|
||||
if (d->m_checker)
|
||||
d->m_checker->fromMap(map);
|
||||
}
|
||||
|
@@ -343,7 +343,7 @@ public:
|
||||
signals:
|
||||
void checkedChanged();
|
||||
|
||||
private:
|
||||
protected:
|
||||
void update();
|
||||
|
||||
std::unique_ptr<Internal::StringAspectPrivate> d;
|
||||
|
@@ -564,7 +564,7 @@ void AndroidDeployQtStep::stdError(const QString &line)
|
||||
if (newOutput.startsWith("warning", Qt::CaseInsensitive)
|
||||
|| newOutput.startsWith("note", Qt::CaseInsensitive))
|
||||
TaskHub::addTask(DeploymentTask(Task::Warning, newOutput));
|
||||
else
|
||||
else if (newOutput != QLatin1String("All files should be loaded. Notifying the device."))
|
||||
TaskHub::addTask(DeploymentTask(Task::Error, newOutput));
|
||||
}
|
||||
|
||||
|
@@ -185,8 +185,8 @@ void TestSettingsWidget::onFrameworkItemChanged()
|
||||
} else {
|
||||
m_ui.frameworksWarn->setText(tr("Mixing test frameworks and test tools."));
|
||||
m_ui.frameworksWarn->setToolTip(tr("Mixing test frameworks and test tools can lead "
|
||||
"to duplicating run information when using e.g. "
|
||||
"'Run All Tests'."));
|
||||
"to duplicating run information when using "
|
||||
"\"Run All Tests\", for example."));
|
||||
}
|
||||
}
|
||||
m_ui.frameworksWarn->setVisible(!atLeastOneEnabled
|
||||
|
@@ -35,6 +35,7 @@ namespace Internal {
|
||||
|
||||
class DiagnosticMark : public TextEditor::TextMark
|
||||
{
|
||||
Q_DECLARE_TR_FUNCTIONS(ClangTools::Internal::DiagnosticMark)
|
||||
public:
|
||||
explicit DiagnosticMark(const Diagnostic &diagnostic);
|
||||
|
||||
|
@@ -66,7 +66,7 @@ class ParserPrivate
|
||||
{
|
||||
public:
|
||||
//! Get document from documentList
|
||||
CPlusPlus::Document::Ptr document(const Utils::FilePath &fileName) const;
|
||||
CPlusPlus::Document::Ptr document(const FilePath &fileName) const;
|
||||
|
||||
struct DocumentCache {
|
||||
unsigned treeRevision = 0;
|
||||
@@ -284,7 +284,7 @@ void Parser::updateDocuments(const QSet<FilePath> &documentPaths)
|
||||
updateDocumentsFromSnapshot(documentPaths, CppTools::CppModelManager::instance()->snapshot());
|
||||
}
|
||||
|
||||
void Parser::updateDocumentsFromSnapshot(const QSet<Utils::FilePath> &documentPaths,
|
||||
void Parser::updateDocumentsFromSnapshot(const QSet<FilePath> &documentPaths,
|
||||
const CPlusPlus::Snapshot &snapshot)
|
||||
{
|
||||
for (const FilePath &documentPath : documentPaths) {
|
||||
|
@@ -76,16 +76,6 @@ BuildDirParameters::BuildDirParameters(CMakeBuildConfiguration *bc)
|
||||
buildDirectory = bc->buildDirectory();
|
||||
|
||||
cmakeBuildType = bc->cmakeBuildType();
|
||||
if (cmakeBuildType.isEmpty()) {
|
||||
// The empty build type might be just a case of loading of an existing project
|
||||
// that doesn't have the "CMake.Build.Type" aspect saved
|
||||
const CMakeConfig config = CMakeConfigItem::itemsFromArguments(initialCMakeArguments);
|
||||
if (!config.isEmpty()) {
|
||||
cmakeBuildType = QString::fromLatin1(CMakeConfigItem::valueOf("CMAKE_BUILD_TYPE", config));
|
||||
if (!cmakeBuildType.isEmpty())
|
||||
bc->setCMakeBuildType(cmakeBuildType);
|
||||
}
|
||||
}
|
||||
|
||||
environment = bc->environment();
|
||||
// Disable distributed building for configuration runs. CMake does not do those in parallel,
|
||||
|
@@ -178,6 +178,16 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
|
||||
m_configModel->flush(); // clear out config cache...;
|
||||
});
|
||||
|
||||
auto buildTypeAspect = bc->aspect<BuildTypeAspect>();
|
||||
connect(buildTypeAspect, &BaseAspect::changed, this, [this, buildTypeAspect]() {
|
||||
if (!m_buildConfiguration->isMultiConfig()) {
|
||||
CMakeConfig config;
|
||||
config << CMakeConfigItem("CMAKE_BUILD_TYPE", buildTypeAspect->value().toUtf8());
|
||||
|
||||
m_configModel->setBatchEditConfiguration(config);
|
||||
}
|
||||
});
|
||||
|
||||
auto qmlDebugAspect = bc->aspect<QtSupport::QmlDebuggingAspect>();
|
||||
connect(qmlDebugAspect, &QtSupport::QmlDebuggingAspect::changed, this, [this]() {
|
||||
updateButtonState();
|
||||
@@ -298,6 +308,7 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
|
||||
Form {
|
||||
buildDirAspect, Break(),
|
||||
bc->aspect<InitialCMakeArgumentsAspect>(), Break(),
|
||||
bc->aspect<BuildTypeAspect>(), Break(),
|
||||
qmlDebugAspect
|
||||
},
|
||||
Space(10),
|
||||
@@ -740,7 +751,7 @@ static QStringList defaultInitialCMakeArguments(const Kit *k, const QString buil
|
||||
|
||||
// CMAKE_BUILD_TYPE:
|
||||
if (!buildType.isEmpty() && !CMakeGeneratorKitAspect::isMultiConfigGenerator(k)) {
|
||||
initialArgs.append(QString::fromLatin1("-DCMAKE_BUILD_TYPE:String=%1").arg(buildType));
|
||||
initialArgs.append(QString::fromLatin1("-DCMAKE_BUILD_TYPE:STRING=%1").arg(buildType));
|
||||
}
|
||||
|
||||
Internal::CMakeSpecificSettings *settings
|
||||
@@ -1246,13 +1257,57 @@ FilePath CMakeBuildConfiguration::sourceDirectory() const
|
||||
|
||||
QString CMakeBuildConfiguration::cmakeBuildType() const
|
||||
{
|
||||
return aspect<BuildTypeAspect>()->value();
|
||||
if (!isMultiConfig()) {
|
||||
auto configChanges = configurationChanges();
|
||||
auto it = std::find_if(configChanges.begin(), configChanges.end(),
|
||||
[](const CMakeConfigItem &item) { return item.key == "CMAKE_BUILD_TYPE";});
|
||||
if (it != configChanges.end())
|
||||
const_cast<CMakeBuildConfiguration*>(this)
|
||||
->setCMakeBuildType(QString::fromUtf8(it->value));
|
||||
}
|
||||
|
||||
void CMakeBuildConfiguration::setCMakeBuildType(const QString &cmakeBuildType)
|
||||
QString cmakeBuildType = aspect<BuildTypeAspect>()->value();
|
||||
|
||||
const Utils::FilePath cmakeCacheTxt = buildDirectory().pathAppended("CMakeCache.txt");
|
||||
const bool hasCMakeCache = QFile::exists(cmakeCacheTxt.toString());
|
||||
CMakeConfig config;
|
||||
|
||||
if (cmakeBuildType == "Unknown") {
|
||||
// The "Unknown" type is the case of loading of an existing project
|
||||
// that doesn't have the "CMake.Build.Type" aspect saved
|
||||
if (hasCMakeCache) {
|
||||
QString errorMessage;
|
||||
config = CMakeBuildSystem::parseCMakeCacheDotTxt(cmakeCacheTxt, &errorMessage);
|
||||
} else {
|
||||
config = CMakeConfigItem::itemsFromArguments(initialCMakeArguments());
|
||||
}
|
||||
} else if (!hasCMakeCache) {
|
||||
config = CMakeConfigItem::itemsFromArguments(initialCMakeArguments());
|
||||
}
|
||||
|
||||
if (!config.isEmpty()) {
|
||||
cmakeBuildType = QString::fromUtf8(CMakeConfigItem::valueOf("CMAKE_BUILD_TYPE", config));
|
||||
const_cast<CMakeBuildConfiguration*>(this)
|
||||
->setCMakeBuildType(cmakeBuildType);
|
||||
}
|
||||
|
||||
return cmakeBuildType;
|
||||
}
|
||||
|
||||
void CMakeBuildConfiguration::setCMakeBuildType(const QString &cmakeBuildType, bool quiet)
|
||||
{
|
||||
if (quiet) {
|
||||
aspect<BuildTypeAspect>()->setValueQuietly(cmakeBuildType);
|
||||
aspect<BuildTypeAspect>()->update();
|
||||
} else {
|
||||
aspect<BuildTypeAspect>()->setValue(cmakeBuildType);
|
||||
}
|
||||
}
|
||||
|
||||
bool CMakeBuildConfiguration::isMultiConfig() const
|
||||
{
|
||||
return m_buildSystem->isMultiConfig();
|
||||
}
|
||||
|
||||
namespace Internal {
|
||||
|
||||
@@ -1282,6 +1337,9 @@ SourceDirectoryAspect::SourceDirectoryAspect()
|
||||
BuildTypeAspect::BuildTypeAspect()
|
||||
{
|
||||
setSettingsKey("CMake.Build.Type");
|
||||
setLabelText(tr("Build type:"));
|
||||
setDisplayStyle(LineEditDisplay);
|
||||
setDefaultValue("Unknown");
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
|
@@ -75,7 +75,9 @@ public:
|
||||
Utils::FilePath sourceDirectory() const;
|
||||
|
||||
QString cmakeBuildType() const;
|
||||
void setCMakeBuildType(const QString &cmakeBuildType);
|
||||
void setCMakeBuildType(const QString &cmakeBuildType, bool quiet = false);
|
||||
|
||||
bool isMultiConfig() const;
|
||||
|
||||
signals:
|
||||
void errorOccurred(const QString &message);
|
||||
@@ -163,6 +165,7 @@ class BuildTypeAspect final : public Utils::StringAspect
|
||||
|
||||
public:
|
||||
BuildTypeAspect();
|
||||
using Utils::StringAspect::update;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
@@ -846,12 +846,20 @@ void CMakeBuildSystem::wireUpConnections()
|
||||
// No CMakeCache? Run with initial arguments!
|
||||
qCDebug(cmakeBuildSystemLog) << "Requesting parse due to build directory change";
|
||||
const BuildDirParameters parameters(cmakeBuildConfiguration());
|
||||
const bool hasCMakeCache = QFile::exists(
|
||||
(parameters.buildDirectory / "CMakeCache.txt").toString());
|
||||
const FilePath cmakeCacheTxt = parameters.buildDirectory.pathAppended("CMakeCache.txt");
|
||||
const bool hasCMakeCache = QFile::exists(cmakeCacheTxt.toString());
|
||||
const auto options = ReparseParameters(
|
||||
hasCMakeCache
|
||||
? REPARSE_DEFAULT
|
||||
: (REPARSE_FORCE_INITIAL_CONFIGURATION | REPARSE_FORCE_CMAKE_RUN));
|
||||
if (hasCMakeCache) {
|
||||
QString errorMessage;
|
||||
const CMakeConfig config = CMakeBuildSystem::parseCMakeCacheDotTxt(cmakeCacheTxt, &errorMessage);
|
||||
if (!config.isEmpty() && errorMessage.isEmpty()) {
|
||||
QByteArray cmakeBuildTypeName = CMakeConfigItem::valueOf("CMAKE_BUILD_TYPE", config);
|
||||
cmakeBuildConfiguration()->setCMakeBuildType(QString::fromUtf8(cmakeBuildTypeName), true);
|
||||
}
|
||||
}
|
||||
setParametersAndRequestParse(BuildDirParameters(cmakeBuildConfiguration()), options);
|
||||
});
|
||||
|
||||
|
@@ -396,7 +396,7 @@ void CorePlugin::warnAboutCrashReporing()
|
||||
? tr("%1 collects crash reports for the sole purpose of fixing bugs. "
|
||||
"To disable this feature go to %2.")
|
||||
: tr("%1 can collect crash reports for the sole purpose of fixing bugs. "
|
||||
"to enable this feature go to %2.");
|
||||
"To enable this feature go to %2.");
|
||||
|
||||
if (Utils::HostOsInfo::isMacHost()) {
|
||||
warnStr = warnStr.arg(Core::Constants::IDE_DISPLAY_NAME)
|
||||
|
@@ -188,7 +188,7 @@ void FileUtils::removeFiles(const FilePaths &filePaths, bool deleteFromFS)
|
||||
continue;
|
||||
if (!file.remove()) {
|
||||
MessageManager::writeDisrupting(
|
||||
QCoreApplication::translate("Core::Internal", "Failed to remove file \"%1\")1.")
|
||||
QCoreApplication::translate("Core::Internal", "Failed to remove file \"%1\".")
|
||||
.arg(fp.toUserOutput()));
|
||||
}
|
||||
}
|
||||
|
@@ -314,7 +314,7 @@
|
||||
<item>
|
||||
<widget class="QPushButton" name="clearCrashReportsButton">
|
||||
<property name="text">
|
||||
<string>Clear local crash reports</string>
|
||||
<string>Clear Local Crash Reports</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@@ -376,7 +376,7 @@ FilePaths VcsManager::promptToDelete(IVersionControl *vc, const FilePaths &fileP
|
||||
return fp.toUserOutput();
|
||||
}).join("</li><li>") + "</li></ul>";
|
||||
const QString title = tr("Version Control");
|
||||
const QString msg = tr("Remove the following files from from the version control system (%2)?"
|
||||
const QString msg = tr("Remove the following files from the version control system (%2)?"
|
||||
"%1Note: This might remove the local file.").arg(fileListForUi, vc->displayName());
|
||||
const QMessageBox::StandardButton button =
|
||||
QMessageBox::question(ICore::dialogParent(), title, msg, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
|
||||
|
@@ -4556,7 +4556,7 @@ public:
|
||||
});
|
||||
|
||||
const auto mainLayout = new QVBoxLayout(this);
|
||||
mainLayout->addWidget(new QLabel(tr("Please select the getters and/or setters "
|
||||
mainLayout->addWidget(new QLabel(tr("Select the getters and setters "
|
||||
"to be created.")));
|
||||
for (auto checkBox : checkBoxes) {
|
||||
if (checkBox)
|
||||
|
@@ -126,7 +126,7 @@ bool CppQuickFixProjectsSettings::useCustomSettings()
|
||||
} else if (m_settingsFile != defaultLocation) {
|
||||
QMessageBox msgBox(Core::ICore::dialogParent());
|
||||
msgBox.setText(tr("Quick Fix settings are saved in a file. Existing settings file "
|
||||
"'%1' found. Should this file be used or a "
|
||||
"\"%1\" found. Should this file be used or a "
|
||||
"new one be created?")
|
||||
.arg(m_settingsFile.toString()));
|
||||
QPushButton *cancel = msgBox.addButton(QMessageBox::Cancel);
|
||||
|
@@ -427,8 +427,8 @@ DebuggerSettings::DebuggerSettings()
|
||||
|
||||
usePseudoTracepoints.setSettingsKey(debugModeGroup, "UsePseudoTracepoints");
|
||||
usePseudoTracepoints.setLabelText(/*GdbOptionsPage::*/tr("Use pseudo message tracepoints"));
|
||||
usePseudoTracepoints.setToolTip(/*GdbOptionsPage::*/tr(
|
||||
"Uses python to extend the ordinary GDB breakpoint class."));
|
||||
usePseudoTracepoints.setToolTip(
|
||||
/*GdbOptionsPage::*/ tr("Uses Python to extend the ordinary GDB breakpoint class."));
|
||||
usePseudoTracepoints.setDefaultValue(true);
|
||||
|
||||
useToolTipsInMainEditor.setSettingsKey(debugModeGroup, "UseToolTips");
|
||||
|
@@ -643,7 +643,7 @@ QVariant RegisterGroup::data(int column, int role) const
|
||||
break;
|
||||
|
||||
case Qt::ToolTipRole:
|
||||
return RegisterHandler::tr("Registers group");
|
||||
return RegisterHandler::tr("A group of registers.");
|
||||
|
||||
default:
|
||||
break;
|
||||
|
@@ -34,6 +34,9 @@
|
||||
#include <texteditor/textstyles.h>
|
||||
#include <utils/utilsicons.h>
|
||||
|
||||
#include <QAction>
|
||||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
#include <QTextEdit>
|
||||
|
||||
using namespace LanguageServerProtocol;
|
||||
@@ -122,8 +125,19 @@ void DiagnosticManager::showDiagnostics(const DocumentUri &uri)
|
||||
const VersionedDiagnostics &versionedDiagnostics = m_diagnostics.value(uri);
|
||||
const int docRevision = doc->document()->revision();
|
||||
if (versionedDiagnostics.version.value_or(docRevision) == docRevision) {
|
||||
const auto icon = QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon());
|
||||
const QString tooltip = tr("Copy to Clipboard");
|
||||
for (const Diagnostic &diagnostic : versionedDiagnostics.diagnostics) {
|
||||
doc->addMark(new TextMark(filePath, diagnostic, m_clientId));
|
||||
QAction *action = new QAction();
|
||||
action->setIcon(icon);
|
||||
action->setToolTip(tooltip);
|
||||
QObject::connect(action, &QAction::triggered, [text = diagnostic.message()]() {
|
||||
QApplication::clipboard()->setText(text);
|
||||
});
|
||||
auto mark = new TextMark(filePath, diagnostic, m_clientId);
|
||||
mark->setActions({action});
|
||||
|
||||
doc->addMark(mark);
|
||||
extraSelections << toDiagnosticsSelections(diagnostic, doc->document());
|
||||
}
|
||||
}
|
||||
|
@@ -37,6 +37,7 @@ namespace LanguageClient {
|
||||
|
||||
class DiagnosticManager
|
||||
{
|
||||
Q_DECLARE_TR_FUNCTIONS(LanguageClient::DiagnosticManager)
|
||||
public:
|
||||
explicit DiagnosticManager(const Utils::Id &clientId);
|
||||
~DiagnosticManager();
|
||||
|
@@ -84,10 +84,10 @@
|
||||
<item>
|
||||
<widget class="QCheckBox" name="useIndenter">
|
||||
<property name="toolTip">
|
||||
<string>If available, use a different margin. For example, the ColumnLimit from the clang-format plugin.</string>
|
||||
<string>If available, use a different margin. For example, the ColumnLimit from the ClangFormat plugin.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Use context specific margin</string>
|
||||
<string>Use context-specific margin</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@@ -11,7 +11,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Export QML</string>
|
||||
<string>Export Components</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
|
@@ -158,7 +158,7 @@ void AssetExporter::beginExport()
|
||||
void AssetExporter::cancel()
|
||||
{
|
||||
if (!m_cancelled) {
|
||||
ExportNotification::addInfo(tr("Cancelling export."));
|
||||
ExportNotification::addInfo(tr("Canceling export."));
|
||||
m_assetDumper.reset();
|
||||
m_cancelled = true;
|
||||
}
|
||||
@@ -227,13 +227,13 @@ void AssetExporter::notifyLoadError(AssetExporterView::LoadState state)
|
||||
errorStr = tr("Loading file is taking too long.");
|
||||
break;
|
||||
case AssetExporterView::LoadState::QmlErrorState:
|
||||
errorStr = tr("Cannot parse. QML file has errors.");
|
||||
errorStr = tr("Cannot parse. The file contains coding errors.");
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
qCDebug(loggerError) << "QML load error:" << errorStr;
|
||||
ExportNotification::addError(tr("Loading QML failed. %1").arg(errorStr));
|
||||
ExportNotification::addError(tr("Loading components failed. %1").arg(errorStr));
|
||||
}
|
||||
|
||||
void AssetExporter::notifyProgress(double value) const
|
||||
@@ -250,13 +250,13 @@ void AssetExporter::onQmlFileLoaded()
|
||||
->documentManager()
|
||||
.currentDesignDocument();
|
||||
if (designDocument->hasQmlParseErrors()) {
|
||||
ExportNotification::addError(tr("Cannot export QML. Document \"%1\" have parsing errors.")
|
||||
ExportNotification::addError(tr("Cannot export component. Document \"%1\" has parsing errors.")
|
||||
.arg(designDocument->displayName()));
|
||||
} else {
|
||||
exportComponent(m_view->rootModelNode());
|
||||
QString error;
|
||||
if (!m_view->saveQmlFile(&error)) {
|
||||
ExportNotification::addError(tr("Error saving QML file. %1")
|
||||
ExportNotification::addError(tr("Error saving component file. %1")
|
||||
.arg(error.isEmpty()? tr("Unknown") : error));
|
||||
}
|
||||
}
|
||||
|
@@ -106,8 +106,8 @@ void AssetExporterPlugin::onExport()
|
||||
|
||||
void AssetExporterPlugin::addActions()
|
||||
{
|
||||
auto exportAction = new QAction(tr("Export QML"));
|
||||
exportAction->setToolTip(tr("Export QML code of the current project."));
|
||||
auto exportAction = new QAction(tr("Export Components"));
|
||||
exportAction->setToolTip(tr("Export components in the current project."));
|
||||
connect(exportAction, &QAction::triggered, this, &AssetExporterPlugin::onExport);
|
||||
Core::Command *cmd = Core::ActionManager::registerAction(exportAction, Constants::EXPORT_QML);
|
||||
|
||||
|
@@ -70,10 +70,10 @@ FilePathModel::~FilePathModel()
|
||||
{
|
||||
if (m_preprocessWatcher && !m_preprocessWatcher->isCanceled() &&
|
||||
!m_preprocessWatcher->isFinished()) {
|
||||
ExportNotification::addInfo(tr("Canceling QML files preparation."));
|
||||
ExportNotification::addInfo(tr("Canceling file preparation."));
|
||||
m_preprocessWatcher->cancel();
|
||||
m_preprocessWatcher->waitForFinished();
|
||||
qCDebug(loggerInfo) << "Canceling QML files preparation done.";
|
||||
qCDebug(loggerInfo) << "Canceled file preparation.";
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -22,7 +22,7 @@
|
||||
<item>
|
||||
<widget class="QLabel" name="targetIdLabel">
|
||||
<property name="text">
|
||||
<string>Selected item</string>
|
||||
<string>Selected component</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@@ -156,7 +156,7 @@ const char addToGroupItemDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMe
|
||||
const char removeGroupItemDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu",
|
||||
"Remove GroupItem");
|
||||
|
||||
const char addItemToStackedContainerDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Add Item");
|
||||
const char addItemToStackedContainerDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Add Component");
|
||||
const char addTabBarToStackedContainerDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Add Tab Bar");
|
||||
const char increaseIndexToStackedContainerDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Increase Index");
|
||||
const char decreaseIndexToStackedContainerDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Decrease Index");
|
||||
@@ -171,22 +171,22 @@ const char layoutFillHeightDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContext
|
||||
const char flowAssignEffectDisplayName[] = "Assign FlowEffect ";
|
||||
const char flowAssignCustomEffectDisplayName[] = "Assign Custom FlowEffect ";
|
||||
|
||||
const char raiseToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Raise selected item.");
|
||||
const char lowerToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Lower selected item.");
|
||||
const char raiseToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Raise selected component.");
|
||||
const char lowerToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Lower selected component.");
|
||||
|
||||
const char resetSizeToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Reset size and use implicit size.");
|
||||
const char resetPositionTooltip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Reset position and use implicit position.");
|
||||
|
||||
const char anchorsFillToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Fill selected item to parent.");
|
||||
const char anchorsResetToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Reset anchors for selected item.");
|
||||
const char anchorsFillToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Fill selected component to parent.");
|
||||
const char anchorsResetToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Reset anchors for selected component.");
|
||||
|
||||
const char layoutColumnLayoutToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Layout selected items in column layout.");
|
||||
const char layoutRowLayoutToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Layout selected items in row layout.");
|
||||
const char layoutGridLayoutToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Layout selected items in grid layout.");
|
||||
const char layoutColumnLayoutToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Layout selected components in column layout.");
|
||||
const char layoutRowLayoutToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Layout selected components in row layout.");
|
||||
const char layoutGridLayoutToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Layout selected components in grid layout.");
|
||||
|
||||
const char increaseIndexOfStackedContainerToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Increase index of stacked container.");
|
||||
const char decreaseIndexOfStackedContainerToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Decrease index of stacked container.");
|
||||
const char addItemToStackedContainerToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Add item to stacked container.");
|
||||
const char addItemToStackedContainerToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Add component to stacked container.");
|
||||
const char addFlowActionToolTip[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Add flow action.");
|
||||
|
||||
const char editListModelDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu",
|
||||
|
@@ -633,7 +633,7 @@ void addSignalHandlerOrGotoImplementation(const SelectionContext &selectionState
|
||||
|
||||
if (!qmlObjectNode.isValid()) {
|
||||
QString title = QCoreApplication::translate("ModelNodeOperations", "Go to Implementation");
|
||||
QString description = QCoreApplication::translate("ModelNodeOperations", "Invalid item.");
|
||||
QString description = QCoreApplication::translate("ModelNodeOperations", "Invalid component.");
|
||||
Core::AsynchronousMessageBox::warning(title, description);
|
||||
return;
|
||||
}
|
||||
|
@@ -87,13 +87,13 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view)
|
||||
m_noSnappingAction->setIcon(Icons::NO_SNAPPING.icon());
|
||||
registerActionAsCommand(m_noSnappingAction, Constants::FORMEDITOR_NO_SNAPPING, QKeySequence(Qt::Key_T));
|
||||
|
||||
m_snappingAndAnchoringAction = layoutActionGroup->addAction(tr("Snap to parent or sibling items and generate anchors."));
|
||||
m_snappingAndAnchoringAction = layoutActionGroup->addAction(tr("Snap to parent or sibling components and generate anchors."));
|
||||
m_snappingAndAnchoringAction->setCheckable(true);
|
||||
m_snappingAndAnchoringAction->setChecked(true);
|
||||
m_snappingAndAnchoringAction->setIcon(Icons::NO_SNAPPING_AND_ANCHORING.icon());
|
||||
registerActionAsCommand(m_snappingAndAnchoringAction, Constants::FORMEDITOR_NO_SNAPPING_AND_ANCHORING, QKeySequence(Qt::Key_W));
|
||||
|
||||
m_snappingAction = layoutActionGroup->addAction(tr("Snap to parent or sibling items but do not generate anchors."));
|
||||
m_snappingAction = layoutActionGroup->addAction(tr("Snap to parent or sibling components but do not generate anchors."));
|
||||
m_snappingAction->setCheckable(true);
|
||||
m_snappingAction->setChecked(true);
|
||||
m_snappingAction->setIcon(Icons::SNAPPING.icon());
|
||||
@@ -108,7 +108,7 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view)
|
||||
upperActions.append(separatorAction);
|
||||
|
||||
m_showBoundingRectAction = new QAction(Utils::Icons::BOUNDING_RECT.icon(),
|
||||
tr("Show bounding rectangles and stripes for empty items."),
|
||||
tr("Show bounding rectangles and stripes for empty components."),
|
||||
this);
|
||||
m_showBoundingRectAction->setCheckable(true);
|
||||
m_showBoundingRectAction->setChecked(false);
|
||||
@@ -123,14 +123,14 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view)
|
||||
upperActions.append(separatorAction);
|
||||
|
||||
m_rootWidthAction = new LineEditAction(tr("Override Width"), this);
|
||||
m_rootWidthAction->setToolTip(tr("Override width of root item."));
|
||||
m_rootWidthAction->setToolTip(tr("Override width of root component."));
|
||||
connect(m_rootWidthAction.data(), &LineEditAction::textChanged,
|
||||
this, &FormEditorWidget::changeRootItemWidth);
|
||||
addAction(m_rootWidthAction.data());
|
||||
upperActions.append(m_rootWidthAction.data());
|
||||
|
||||
m_rootHeightAction = new LineEditAction(tr("Override Height"), this);
|
||||
m_rootHeightAction->setToolTip(tr("Override height of root item."));
|
||||
m_rootHeightAction->setToolTip(tr("Override height of root component."));
|
||||
connect(m_rootHeightAction.data(), &LineEditAction::textChanged,
|
||||
this, &FormEditorWidget::changeRootItemHeight);
|
||||
addAction(m_rootHeightAction.data());
|
||||
|
@@ -58,16 +58,15 @@ QVariant ItemLibraryAddImportModel::data(const QModelIndex &index, int role) con
|
||||
if (!index.isValid() || index.row() >= m_importList.count())
|
||||
return {};
|
||||
|
||||
QString importUrl = m_importList[index.row()].url();
|
||||
|
||||
Import import = m_importList[index.row()];
|
||||
if (m_roleNames[role] == "importUrl")
|
||||
return importUrl;
|
||||
return m_importList[index.row()].toString(true, true);
|
||||
|
||||
if (m_roleNames[role] == "importVisible")
|
||||
return m_searchText.isEmpty() || importUrl.isEmpty() || m_importFilterList.contains(importUrl);
|
||||
return m_searchText.isEmpty() || import.url().isEmpty() || m_importFilterList.contains(import.url());
|
||||
|
||||
if (m_roleNames[role] == "isSeparator")
|
||||
return importUrl.isEmpty();
|
||||
return import.isEmpty();
|
||||
|
||||
qWarning() << Q_FUNC_INFO << "invalid role requested";
|
||||
|
||||
@@ -132,14 +131,12 @@ void ItemLibraryAddImportModel::update(const QList<Import> &possibleImports)
|
||||
// create import sections
|
||||
bool previousIsPriority = false;
|
||||
for (const Import &import : std::as_const(filteredImports)) {
|
||||
if (import.isLibraryImport()) {
|
||||
bool currentIsPriority = m_priorityImports.contains(import.url());
|
||||
if (previousIsPriority && !currentIsPriority)
|
||||
m_importList.append(Import::empty()); // empty import acts as a separator
|
||||
m_importList.append(import);
|
||||
previousIsPriority = currentIsPriority;
|
||||
}
|
||||
}
|
||||
|
||||
endResetModel();
|
||||
}
|
||||
|
@@ -319,7 +319,7 @@ void ItemLibraryAssetImportDialog::updateImport(const ModelNode &updateNode,
|
||||
if (options.isEmpty() || sourcePath.isEmpty()) {
|
||||
errorMsg = QCoreApplication::translate(
|
||||
"ModelNodeOperations",
|
||||
"Asset import data file '%1' is invalid.").arg(jsonFileName);
|
||||
"Asset import data file \"%1\" is invalid.").arg(jsonFileName);
|
||||
} else {
|
||||
QFileInfo sourceInfo{sourcePath};
|
||||
if (!sourceInfo.exists()) {
|
||||
@@ -334,7 +334,7 @@ void ItemLibraryAssetImportDialog::updateImport(const ModelNode &updateNode,
|
||||
initialPath = compFileInfo.absolutePath();
|
||||
QStringList selectedFiles = QFileDialog::getOpenFileNames(
|
||||
Core::ICore::dialogParent(),
|
||||
tr("Locate 3D Asset '%1'").arg(sourceInfo.fileName()),
|
||||
tr("Locate 3D Asset \"%1\"").arg(sourceInfo.fileName()),
|
||||
initialPath, sourceInfo.fileName());
|
||||
if (!selectedFiles.isEmpty()
|
||||
&& QFileInfo{selectedFiles[0]}.fileName() == sourceInfo.fileName()) {
|
||||
@@ -361,7 +361,7 @@ void ItemLibraryAssetImportDialog::updateImport(const ModelNode &updateNode,
|
||||
|
||||
} else {
|
||||
errorMsg = QCoreApplication::translate(
|
||||
"ModelNodeOperations", "Unable to locate source scene '%1'.")
|
||||
"ModelNodeOperations", "Unable to locate source scene \"%1\".")
|
||||
.arg(sourceInfo.fileName());
|
||||
}
|
||||
}
|
||||
@@ -370,7 +370,7 @@ void ItemLibraryAssetImportDialog::updateImport(const ModelNode &updateNode,
|
||||
}
|
||||
} else {
|
||||
errorMsg = QCoreApplication::translate("ModelNodeOperations",
|
||||
"Opening asset import data file '%1' failed.")
|
||||
"Opening asset import data file \"%1\" failed.")
|
||||
.arg(jsonFileName);
|
||||
}
|
||||
} else {
|
||||
|
@@ -50,6 +50,9 @@ QString ItemLibraryImport::importName() const
|
||||
if (importUrl() == "QtQuick")
|
||||
return tr("Default Components");
|
||||
|
||||
if (m_import.isFileImport())
|
||||
return m_import.toString(true, true);
|
||||
|
||||
return importUrl().replace('.', ' ');
|
||||
}
|
||||
|
||||
@@ -64,6 +67,9 @@ QString ItemLibraryImport::importUrl() const
|
||||
if (m_sectionType == SectionType::Unimported)
|
||||
return unimportedComponentsTitle();
|
||||
|
||||
if (m_import.isFileImport())
|
||||
return m_import.file();
|
||||
|
||||
return m_import.url();
|
||||
}
|
||||
|
||||
@@ -168,6 +174,11 @@ bool ItemLibraryImport::hasCategories() const
|
||||
return m_categoryModel.rowCount() > 0;
|
||||
}
|
||||
|
||||
bool ItemLibraryImport::hasSingleCategory() const
|
||||
{
|
||||
return m_categoryModel.rowCount() == 1;
|
||||
}
|
||||
|
||||
void ItemLibraryImport::sortCategorySections()
|
||||
{
|
||||
m_categoryModel.sortCategorySections();
|
||||
|
@@ -65,6 +65,7 @@ public:
|
||||
bool importUsed() const;
|
||||
bool importRemovable() const;
|
||||
bool hasCategories() const;
|
||||
bool hasSingleCategory() const;
|
||||
ItemLibraryCategory *getCategorySection(const QString &categoryName) const;
|
||||
|
||||
void addCategory(ItemLibraryCategory *category);
|
||||
|
@@ -214,10 +214,15 @@ void ItemLibraryModel::update(ItemLibraryInfo *itemLibraryInfo, Model *model)
|
||||
// create import sections
|
||||
QHash<QString, ItemLibraryImport *> importHash;
|
||||
for (const Import &import : model->imports()) {
|
||||
if (import.isLibraryImport() && import.url() != projectName) {
|
||||
if (import.url() != projectName) {
|
||||
bool addNew = true;
|
||||
bool isQuick3DAsset = import.url().startsWith("Quick3DAssets.");
|
||||
QString importUrl = isQuick3DAsset ? ItemLibraryImport::quick3DAssetsTitle() : import.url();
|
||||
QString importUrl = import.url();
|
||||
if (isQuick3DAsset)
|
||||
importUrl = ItemLibraryImport::quick3DAssetsTitle();
|
||||
else if (import.isFileImport())
|
||||
importUrl = import.toString(true, true).remove("\"");
|
||||
|
||||
ItemLibraryImport *oldImport = importHash.value(importUrl);
|
||||
if (oldImport && oldImport->sectionType() == ItemLibraryImport::SectionType::Quick3DAssets
|
||||
&& isQuick3DAsset) {
|
||||
@@ -280,28 +285,36 @@ void ItemLibraryModel::update(ItemLibraryInfo *itemLibraryInfo, Model *model)
|
||||
QString catName = entry.category();
|
||||
if (isUsable) {
|
||||
if (catName == ItemLibraryImport::userComponentsTitle()) {
|
||||
// create an import section for user components
|
||||
importSection = importByUrl(ItemLibraryImport::userComponentsTitle());
|
||||
if (entry.requiredImport().isEmpty()) { // user components
|
||||
importSection = importHash[ItemLibraryImport::userComponentsTitle()];
|
||||
if (!importSection) {
|
||||
importSection = new ItemLibraryImport(
|
||||
{}, this, ItemLibraryImport::SectionType::User);
|
||||
m_importList.append(importSection);
|
||||
importHash.insert(ItemLibraryImport::userComponentsTitle(), importSection);
|
||||
importSection->setImportExpanded(loadExpandedState(catName));
|
||||
}
|
||||
} else { // directory import
|
||||
importSection = importHash[entry.requiredImport()];
|
||||
|
||||
}
|
||||
} else if (catName == "My Quick3D Components") {
|
||||
importSection = importByUrl(ItemLibraryImport::quick3DAssetsTitle());
|
||||
importSection = importHash[ItemLibraryImport::quick3DAssetsTitle()];
|
||||
} else {
|
||||
if (catName.startsWith("Qt Quick - "))
|
||||
catName = catName.mid(11); // remove "Qt Quick - "
|
||||
importSection = importByUrl(entry.requiredImport());
|
||||
|
||||
importSection = importHash[entry.requiredImport().isEmpty() ? "QtQuick"
|
||||
: entry.requiredImport()];
|
||||
}
|
||||
} else {
|
||||
catName = ItemLibraryImport::unimportedComponentsTitle();
|
||||
importSection = importByUrl(catName);
|
||||
importSection = importHash[catName];
|
||||
if (!importSection) {
|
||||
importSection = new ItemLibraryImport(
|
||||
{}, this, ItemLibraryImport::SectionType::Unimported);
|
||||
m_importList.append(importSection);
|
||||
importHash.insert(ItemLibraryImport::unimportedComponentsTitle(), importSection);
|
||||
importSection->setImportExpanded(loadExpandedState(catName));
|
||||
}
|
||||
}
|
||||
@@ -316,9 +329,11 @@ void ItemLibraryModel::update(ItemLibraryInfo *itemLibraryInfo, Model *model)
|
||||
if (!categorySection) {
|
||||
categorySection = new ItemLibraryCategory(catName, importSection);
|
||||
importSection->addCategory(categorySection);
|
||||
if (importSection->sectionType() == ItemLibraryImport::SectionType::Default)
|
||||
if (importSection->sectionType() == ItemLibraryImport::SectionType::Default
|
||||
&& !importSection->hasSingleCategory()) {
|
||||
categorySection->setExpanded(loadExpandedState(categorySection->categoryName()));
|
||||
}
|
||||
}
|
||||
|
||||
// create item
|
||||
auto item = new ItemLibraryItem(entry, isUsable, categorySection);
|
||||
|
@@ -91,7 +91,7 @@ bool fitsToTargetProperty(const NodeAbstractProperty &targetProperty,
|
||||
|
||||
static inline QString msgUnknownItem(const QString &t)
|
||||
{
|
||||
return NavigatorTreeModel::tr("Unknown item: %1").arg(t);
|
||||
return NavigatorTreeModel::tr("Unknown component: %1").arg(t);
|
||||
}
|
||||
|
||||
static void removePosition(const ModelNode &node)
|
||||
@@ -250,20 +250,20 @@ QVariant NavigatorTreeModel::data(const QModelIndex &index, int role) const
|
||||
if (role == Qt::CheckStateRole)
|
||||
return currentQmlObjectNode.isAliasExported() ? Qt::Checked : Qt::Unchecked;
|
||||
else if (role == Qt::ToolTipRole && !modelNodeForIndex(index).isRootNode())
|
||||
return tr("Toggles whether this item is exported as an "
|
||||
"alias property of the root item.");
|
||||
return tr("Toggles whether this component is exported as an "
|
||||
"alias property of the root component.");
|
||||
} else if (index.column() == ColumnType::Visibility) { // visible
|
||||
if (role == Qt::CheckStateRole)
|
||||
return m_view->isNodeInvisible(modelNode) ? Qt::Unchecked : Qt::Checked;
|
||||
else if (role == Qt::ToolTipRole && !modelNodeForIndex(index).isRootNode())
|
||||
return tr("Toggles the visibility of this item in the form editor.\n"
|
||||
"This is independent of the visibility property in QML.");
|
||||
return tr("Toggles the visibility of this component in the form editor.\n"
|
||||
"This is independent of the visibility property.");
|
||||
} else if (index.column() == ColumnType::Lock) { // lock
|
||||
if (role == Qt::CheckStateRole)
|
||||
return modelNode.locked() ? Qt::Checked : Qt::Unchecked;
|
||||
else if (role == Qt::ToolTipRole && !modelNodeForIndex(index).isRootNode())
|
||||
return tr("Toggles whether this item is locked.\n"
|
||||
"Locked items cannot be modified or selected.");
|
||||
return tr("Toggles whether this component is locked.\n"
|
||||
"Locked components cannot be modified or selected.");
|
||||
}
|
||||
|
||||
return QVariant();
|
||||
|
@@ -126,7 +126,7 @@ QList<QToolButton *> NavigatorWidget::createToolBarWidgets()
|
||||
filter->setPopupMode(QToolButton::InstantPopup);
|
||||
filter->setProperty("noArrow", true);
|
||||
auto filterMenu = new QMenu(filter);
|
||||
auto filterAction = new QAction(tr("Show only visible items."), nullptr);
|
||||
auto filterAction = new QAction(tr("Show Only Visible Components"), nullptr);
|
||||
filterAction->setCheckable(true);
|
||||
|
||||
bool filterFlag = DesignerSettings::getValue(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS).toBool();
|
||||
@@ -135,7 +135,7 @@ QList<QToolButton *> NavigatorWidget::createToolBarWidgets()
|
||||
connect(filterAction, &QAction::toggled, this, &NavigatorWidget::filterToggled);
|
||||
filterMenu->addAction(filterAction);
|
||||
|
||||
auto reverseAction = new QAction(tr("Reverse item order."), nullptr);
|
||||
auto reverseAction = new QAction(tr("Reverse Component Order"), nullptr);
|
||||
reverseAction->setCheckable(true);
|
||||
|
||||
bool reverseFlag = DesignerSettings::getValue(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER).toBool();
|
||||
|
@@ -163,9 +163,9 @@ void PropertyEditorView::changeValue(const QString &name)
|
||||
value->setValue(m_selectedNode.id());
|
||||
m_locked = false;
|
||||
if (!QmlDesigner::ModelNode::isValidId(newId))
|
||||
Core::AsynchronousMessageBox::warning(tr("Invalid Id"), tr("%1 is an invalid id.").arg(newId));
|
||||
Core::AsynchronousMessageBox::warning(tr("Invalid ID"), tr("%1 is an invalid ID.").arg(newId));
|
||||
else
|
||||
Core::AsynchronousMessageBox::warning(tr("Invalid Id"), tr("%1 already exists.").arg(newId));
|
||||
Core::AsynchronousMessageBox::warning(tr("Invalid ID"), tr("%1 already exists.").arg(newId));
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -323,7 +323,7 @@ void PropertyEditorView::exportPopertyAsAlias(const QString &name)
|
||||
PropertyName propertyName = aliasName.toUtf8();
|
||||
if (rootModelNode().hasProperty(propertyName)) {
|
||||
Core::AsynchronousMessageBox::warning(tr("Cannot Export Property as Alias"),
|
||||
tr("Property %1 does already exist for root item.").arg(aliasName));
|
||||
tr("Property %1 does already exist for root component.").arg(aliasName));
|
||||
return;
|
||||
}
|
||||
rootModelNode().bindingProperty(propertyName).setDynamicTypeNameAndExpression("alias", id + "." + name);
|
||||
|
@@ -109,7 +109,7 @@ void StatesEditorView::removeState(int nodeId)
|
||||
|
||||
if (!lockedTargets.empty()) {
|
||||
Utils::sort(lockedTargets);
|
||||
QString detailedText = QString("<b>" + tr("Locked items:") + "</b><br>");
|
||||
QString detailedText = QString("<b>" + tr("Locked components:") + "</b><br>");
|
||||
|
||||
for (const auto &id : qAsConst(lockedTargets))
|
||||
detailedText.append("- " + id + "<br>");
|
||||
@@ -120,7 +120,7 @@ void StatesEditorView::removeState(int nodeId)
|
||||
msgBox.setTextFormat(Qt::RichText);
|
||||
msgBox.setIcon(QMessageBox::Question);
|
||||
msgBox.setWindowTitle(tr("Remove State"));
|
||||
msgBox.setText(QString(tr("Removing this state will modify locked items.") + "<br><br>%1")
|
||||
msgBox.setText(QString(tr("Removing this state will modify locked components.") + "<br><br>%1")
|
||||
.arg(detailedText));
|
||||
msgBox.setInformativeText(tr("Continue by removing the state?"));
|
||||
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
|
||||
|
@@ -54,7 +54,7 @@ public:
|
||||
QString alias() const { return m_alias; }
|
||||
QStringList importPaths() const { return m_importPathList; }
|
||||
|
||||
QString toString(bool skipAlias = false) const;
|
||||
QString toString(bool skipAlias = false, bool skipVersion = false) const;
|
||||
QString toImportString() const;
|
||||
|
||||
bool operator==(const Import &other) const;
|
||||
|
@@ -366,7 +366,7 @@ void MetaInfoReader::syncItemLibraryEntries()
|
||||
try {
|
||||
m_metaInfo.itemLibraryInfo()->addEntries(m_bufferedEntries, m_overwriteDuplicates);
|
||||
} catch (const InvalidMetaInfoException &) {
|
||||
addError(tr("Invalid or duplicate item library entry %1").arg(m_currentEntry.name()), currentSourceLocation());
|
||||
addError(tr("Invalid or duplicate library entry %1").arg(m_currentEntry.name()), currentSourceLocation());
|
||||
}
|
||||
m_bufferedEntries.clear();
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user