QmlDesigner: Add metainfo and specifics of various modules

- Saferenderer
- Charts
- Graphs
- VirtualKeyboard
- Quick3DPhysics

Various specifics were copied from modules into QDS with minimal
updates to fix most glaring errors/layout issues. It is not guaranteed
they are all up to date and fully functional.

Charts and Graphs cannot be enabled for project storage yet, as their
.qmltypes files contain duplicate entries. When they are fixed in Qt
version QDS targets, these modules can be enabled for project storage.

Fixes: QDS-15020
Change-Id: Id3e3c76c3940f2ee05359b9274c82791b8d95c38
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Miikka Heikkinen
2025-04-03 16:15:25 +03:00
parent 826ecdde6d
commit b81f674f31
130 changed files with 5242 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 473 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 877 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 831 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 745 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 778 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 559 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 473 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 567 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 621 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,166 @@
MetaInfo {
Type {
name: "QtCharts.ChartView"
icon: "images/chartview-icon16.png"
ItemLibraryEntry {
name: "Area"
category: "Qt Charts - ChartView"
libraryIcon: "images/areaseries-icon.png"
version: "2.0"
requiredImport: "QtCharts"
QmlSource { source: "source/AreaSeries.qml" }
}
ItemLibraryEntry {
name: "Bar"
category: "Qt Charts - ChartView"
libraryIcon: "images/barseries-icon.png"
version: "2.0"
requiredImport: "QtCharts"
QmlSource { source: "source/BarSeries.qml" }
}
ItemLibraryEntry {
name: "BoxPlot"
category: "Qt Charts - ChartView"
libraryIcon: "images/boxplotseries-icon.png"
version: "2.0"
requiredImport: "QtCharts"
QmlSource { source: "source/BoxPlotSeries.qml" }
}
ItemLibraryEntry {
name: "H.Bar"
category: "Qt Charts - ChartView"
libraryIcon: "images/horizontalbarseries-icon.png"
version: "2.0"
requiredImport: "QtCharts"
QmlSource { source: "source/HorizontalBarSeries.qml" }
}
ItemLibraryEntry {
name: "H.PercentBar"
category: "Qt Charts - ChartView"
libraryIcon: "images/horizontalpercentbarseries-icon.png"
version: "2.0"
requiredImport: "QtCharts"
QmlSource { source: "source/HorizontalPercentBarSeries.qml" }
}
ItemLibraryEntry {
name: "H.StackedBar"
category: "Qt Charts - ChartView"
libraryIcon: "images/horizontalstackedbarseries-icon.png"
version: "2.0"
requiredImport: "QtCharts"
QmlSource { source: "source/HorizontalStackedBarSeries.qml" }
}
ItemLibraryEntry {
name: "Line"
category: "Qt Charts - ChartView"
libraryIcon: "images/lineseries-icon.png"
version: "2.0"
requiredImport: "QtCharts"
QmlSource { source: "source/LineSeries.qml" }
}
ItemLibraryEntry {
name: "Percent"
category: "Qt Charts - ChartView"
libraryIcon: "images/percentbarseries-icon.png"
version: "2.0"
requiredImport: "QtCharts"
QmlSource { source: "source/PercentBarSeries.qml" }
}
ItemLibraryEntry {
name: "Pie"
category: "Qt Charts - ChartView"
libraryIcon: "images/pieseries-icon.png"
version: "2.0"
requiredImport: "QtCharts"
QmlSource { source: "source/PieSeries.qml" }
}
ItemLibraryEntry {
name: "Scatter"
category: "Qt Charts - ChartView"
libraryIcon: "images/scatterseries-icon.png"
version: "2.0"
requiredImport: "QtCharts"
QmlSource { source: "source/ScatterSeries.qml" }
}
ItemLibraryEntry {
name: "Spline"
category: "Qt Charts - ChartView"
libraryIcon: "images/splineseries-icon.png"
version: "2.0"
requiredImport: "QtCharts"
QmlSource { source: "source/SplineSeries.qml" }
}
ItemLibraryEntry {
name: "StackedBar"
category: "Qt Charts - ChartView"
libraryIcon: "images/stackedbarseries-icon.png"
version: "2.0"
requiredImport: "QtCharts"
QmlSource { source: "source/StackedBarSeries.qml" }
}
ItemLibraryEntry {
name: "Area"
category: "Qt Charts - PolarChartView"
libraryIcon: "images/areaseries-polar-icon.png"
version: "2.0"
requiredImport: "QtCharts"
QmlSource { source: "source/PolarAreaSeries.qml" }
}
ItemLibraryEntry {
name: "Line"
category: "Qt Charts - PolarChartView"
libraryIcon: "images/lineseries-polar-icon.png"
version: "2.0"
requiredImport: "QtCharts"
QmlSource { source: "source/PolarLineSeries.qml" }
}
ItemLibraryEntry {
name: "Scatter"
category: "Qt Charts - PolarChartView"
libraryIcon: "images/scatterseries-polar-icon.png"
version: "2.0"
requiredImport: "QtCharts"
QmlSource { source: "source/PolarScatterSeries.qml" }
}
ItemLibraryEntry {
name: "Spline"
category: "Qt Charts - PolarChartView"
libraryIcon: "images/splineseries-polar-icon.png"
version: "2.0"
requiredImport: "QtCharts"
QmlSource { source: "source/PolarSplineSeries.qml" }
}
}
}

View File

@@ -0,0 +1,111 @@
MetaInfo {
Type {
name: "QtGraphs.Bars3D"
icon: "images/bars3d-icon16.png"
ItemLibraryEntry {
name: "Bars3D"
category: "3D Graphs"
libraryIcon: "images/bars3d-icon.png"
version: "1.0"
requiredImport: "QtGraphs"
QmlSource { source: "source/Bars3D.qml" }
}
}
Type {
name: "QtGraphs.Scatter3D"
icon: "images/scatter3d-icon16.png"
ItemLibraryEntry {
name: "Scatter3D"
category: "3D Graphs"
libraryIcon: "images/scatter3d-icon.png"
version: "1.0"
requiredImport: "QtGraphs"
QmlSource { source: "source/Scatter3D.qml" }
}
}
Type {
name: "QtGraphs.Surface3D"
icon: "images/surface3d-icon16.png"
ItemLibraryEntry {
name: "Surface3D"
category: "3D Graphs"
libraryIcon: "images/surface3d-icon.png"
version: "1.0"
requiredImport: "QtGraphs"
QmlSource { source: "source/Surface3D.qml" }
}
}
Type {
name: "QtGraphs.GraphsView"
icon: "images/chartview-icon16.png"
ItemLibraryEntry {
name: "Area"
category: "2D Graphs"
libraryIcon: "images/areaseries-icon.png"
version: "1.0"
requiredImport: "QtGraphs"
QmlSource { source: "source/Graphs2DAreaSeries.qml" }
}
ItemLibraryEntry {
name: "Bar"
category: "2D Graphs"
libraryIcon: "images/barseries-icon.png"
version: "1.0"
requiredImport: "QtGraphs"
QmlSource { source: "source/Graphs2DBarSeries.qml" }
}
ItemLibraryEntry {
name: "Line"
category: "2D Graphs"
libraryIcon: "images/lineseries-icon.png"
version: "1.0"
requiredImport: "QtGraphs"
QmlSource { source: "source/Graphs2DLineSeries.qml" }
}
ItemLibraryEntry {
name: "Pie"
category: "2D Graphs"
libraryIcon: "images/pieseries-icon.png"
version: "1.0"
requiredImport: "QtGraphs"
QmlSource { source: "source/Graphs2DPieSeries.qml" }
}
ItemLibraryEntry {
name: "Scatter"
category: "2D Graphs"
libraryIcon: "images/scatterseries-icon.png"
version: "1.0"
requiredImport: "QtGraphs"
QmlSource { source: "source/Graphs2DScatterSeries.qml" }
}
ItemLibraryEntry {
name: "Spline"
category: "2D Graphs"
libraryIcon: "images/splineseries-icon.png"
version: "1.0"
requiredImport: "QtGraphs"
QmlSource { source: "source/Graphs2DSplineSeries.qml" }
}
}
}

View File

@@ -0,0 +1,47 @@
MetaInfo {
Type {
name: "Qt.SafeRenderer.SafePicture"
icon: "images/picture-icon16.png"
ItemLibraryEntry {
name: "SafePicture"
category: "Qt Safe Renderer"
libraryIcon: "images/picture-icon.png"
version: "2.0"
requiredImport: "Qt.SafeRenderer"
Property { name: "width"; type: "int"; value: 64; }
Property { name: "height"; type: "int"; value: 64; }
}
}
Type {
name: "Qt.SafeRenderer.SafeText"
icon: "images/text-16px.png"
ItemLibraryEntry {
name: "SafeText"
category: "Qt Safe Renderer"
libraryIcon: "images/text-24px.png"
version: "2.0"
requiredImport: "Qt.SafeRenderer"
Property { name: "width"; type: "int"; value: 128; }
Property { name: "height"; type: "int"; value: 64; }
}
}
Type {
name: "Qt.SafeRenderer.SafeImage"
icon: "images/image-icon16.png"
ItemLibraryEntry {
name: "SafeImage"
category: "Qt Safe Renderer"
libraryIcon: "images/image-icon.png"
version: "2.0"
requiredImport: "Qt.SafeRenderer"
Property { name: "width"; type: "int"; value: 64; }
Property { name: "height"; type: "int"; value: 64; }
}
}
}

View File

@@ -0,0 +1,35 @@
MetaInfo {
Type {
name: "QtQuick.VirtualKeyboard.InputPanel"
icon: "images/text-input-icon16.png"
ItemLibraryEntry {
name: "Input Panel"
category: "Virtual Keyboard"
libraryIcon: "images/text-input-icon.png"
version: "6.0"
requiredImport: "QtQuick.VirtualKeyboard"
Property { name: "width"; type: "int"; value: 200; }
Property { name: "height"; type: "int"; value: 200; }
toolTip: qsTr("Provides the virtual keyboard UI.")
}
}
Type {
name: "QtQuick.VirtualKeyboard.HandwritingInputPanel"
icon: "images/text-input-icon16.png"
ItemLibraryEntry {
name: "Handwriting Input Panel"
category: "Virtual Keyboard"
libraryIcon: "images/text-input-icon.png"
version: "6.0"
requiredImport: "QtQuick.VirtualKeyboard"
Property { name: "width"; type: "int"; value: 200; }
Property { name: "height"; type: "int"; value: 200; }
toolTip: qsTr("Provides a handwriting panel add-on for the virtual keyboard UI.")
}
}
}

View File

@@ -0,0 +1,261 @@
MetaInfo {
Type {
name: "QtQuick3D.Physics.PhysicsWorld"
icon: "images/physicsworld16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
canBeDroppedInView3D: false
}
ItemLibraryEntry {
name: "Physics World"
category: "Components"
libraryIcon: "images/physicsworld.png"
version: "6.5"
requiredImport: "QtQuick3D.Physics"
}
}
Type {
name: "QtQuick3D.Physics.TriggerBody"
icon: "images/triggerbody16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
canBeDroppedInView3D: true
}
ItemLibraryEntry {
name: "Trigger Body"
category: "Collision Bodies"
libraryIcon: "images/triggerbody.png"
version: "6.5"
requiredImport: "QtQuick3D.Physics"
}
}
Type {
name: "QtQuick3D.Physics.StaticRigidBody"
icon: "images/staticrigidbody16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
canBeDroppedInView3D: true
}
ItemLibraryEntry {
name: "Static Rigid Body"
category: "Collision Bodies"
libraryIcon: "images/staticrigidbody.png"
version: "6.5"
requiredImport: "QtQuick3D.Physics"
}
}
Type {
name: "QtQuick3D.Physics.DynamicRigidBody"
icon: "images/dynamicrigidbody16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
canBeDroppedInView3D: true
}
ItemLibraryEntry {
name: "Dynamic Rigid Body"
category: "Collision Bodies"
libraryIcon: "images/dynamicrigidbody.png"
version: "6.5"
requiredImport: "QtQuick3D.Physics"
}
}
Type {
name: "QtQuick3D.Physics.PhysicsMaterial"
icon: "images/physicsmaterial16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
canBeDroppedInView3D: false
}
ItemLibraryEntry {
name: "Physics Material"
category: "Components"
libraryIcon: "images/physicsmaterial.png"
version: "6.5"
requiredImport: "QtQuick3D.Physics"
}
}
Type {
name: "QtQuick3D.Physics.BoxShape"
icon: "images/boxshape16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
canBeDroppedInView3D: true
}
ItemLibraryEntry {
name: "Box Shape"
category: "Collision Shapes"
libraryIcon: "images/boxshape.png"
version: "6.5"
requiredImport: "QtQuick3D.Physics"
}
}
Type {
name: "QtQuick3D.Physics.CapsuleShape"
icon: "images/capsuleshape16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
canBeDroppedInView3D: true
}
ItemLibraryEntry {
name: "Capsule Shape"
category: "Collision Shapes"
libraryIcon: "images/capsuleshape.png"
version: "6.5"
requiredImport: "QtQuick3D.Physics"
}
}
Type {
name: "QtQuick3D.Physics.ConvexMeshShape"
icon: "images/convexmeshshape16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
canBeDroppedInView3D: true
}
ItemLibraryEntry {
name: "Convex Mesh Shape"
category: "Collision Shapes"
libraryIcon: "images/convexmeshshape.png"
version: "6.5"
requiredImport: "QtQuick3D.Physics"
}
}
Type {
name: "QtQuick3D.Physics.HeightFieldShape"
icon: "images/heightfieldshape16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
canBeDroppedInView3D: true
}
ItemLibraryEntry {
name: "Height Field Shape"
category: "Collision Shapes"
libraryIcon: "images/heightfieldshape.png"
version: "6.5"
requiredImport: "QtQuick3D.Physics"
}
}
Type {
name: "QtQuick3D.Physics.PlaneShape"
icon: "images/planeshape16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
canBeDroppedInView3D: true
}
ItemLibraryEntry {
name: "Plane Shape"
category: "Collision Shapes"
libraryIcon: "images/planeshape.png"
version: "6.5"
requiredImport: "QtQuick3D.Physics"
}
}
Type {
name: "QtQuick3D.Physics.SphereShape"
icon: "images/sphereshape16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
canBeDroppedInView3D: true
}
ItemLibraryEntry {
name: "Sphere Shape"
category: "Collision Shapes"
libraryIcon: "images/sphereshape.png"
version: "6.5"
requiredImport: "QtQuick3D.Physics"
}
}
Type {
name: "QtQuick3D.Physics.TriangleMeshShape"
icon: "images/trianglemeshshape16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
canBeDroppedInView3D: true
}
ItemLibraryEntry {
name: "Triangle Mesh Shape"
category: "Collision Shapes"
libraryIcon: "images/trianglemeshshape.png"
version: "6.5"
requiredImport: "QtQuick3D.Physics"
}
}
Type {
name: "QtQuick3D.Physics.CharacterController"
icon: "images/charactercontroller16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
canBeDroppedInView3D: true
}
ItemLibraryEntry {
name: "Character Controller"
category: "Collision Bodies"
libraryIcon: "images/charactercontroller.png"
version: "6.5"
requiredImport: "QtQuick3D.Physics"
}
}
}

View File

@@ -0,0 +1,20 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtCharts
ChartView {
width: 300
height: 300
AreaSeries {
name: "AreaSeries"
upperSeries: LineSeries {
XYPoint { x: 0; y: 1.5 }
XYPoint { x: 1; y: 3 }
XYPoint { x: 3; y: 4.3 }
XYPoint { x: 6; y: 1.1 }
}
}
}

View File

@@ -0,0 +1,17 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtCharts
ChartView {
width: 300
height: 300
BarSeries {
name: "BarSeries"
BarSet { label: "Set1"; values: [2, 2, 3] }
BarSet { label: "Set2"; values: [5, 1, 2] }
BarSet { label: "Set3"; values: [3, 5, 8] }
}
}

View File

@@ -0,0 +1,28 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtQuick3D
import QtGraphs
Bars3D {
id: bars3d
width: 300
height: 300
Bar3DSeries {
id: bars3dSeries
ItemModelBarDataProxy {
id: barsDataProxy
itemModel: ListModel {
ListElement{ row: "row 1"; column: "column 1"; value: "1"; }
ListElement{ row: "row 1"; column: "column 2"; value: "2"; }
ListElement{ row: "row 1"; column: "column 3"; value: "3"; }
}
rowRole: "row"
columnRole: "column"
valueRole: "value"
}
}
}

View File

@@ -0,0 +1,17 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtCharts
ChartView {
width: 300
height: 300
BoxPlotSeries {
name: "BoxPlotSeries"
BoxSet { label: "Set1"; values: [3, 4, 5.1, 6.2, 8.5] }
BoxSet { label: "Set2"; values: [5, 6, 7.5, 8.6, 11.8] }
BoxSet { label: "Set3"; values: [3.2, 5, 5.7, 8, 9.2] }
}
}

View File

@@ -0,0 +1,52 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtGraphs
GraphsView {
width: 300
height: 300
axisX: valueAxisX
axisY: valueAxisY
ValueAxis {
id: valueAxisX
min: 0
max: 10
}
ValueAxis {
id: valueAxisY
min: 0
max: 10
}
AreaSeries {
name: "AreaSeries"
upperSeries: lineSeries
LineSeries {
id: lineSeries
XYPoint {
x: 0
y: 1.5
}
XYPoint {
x: 1
y: 3
}
XYPoint {
x: 6
y: 6.3
}
XYPoint {
x: 10
y: 3.1
}
}
}
}

View File

@@ -0,0 +1,31 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtGraphs
GraphsView {
width: 300
height: 300
axisX: barCategoryAxis
axisY: valueAxis
BarCategoryAxis {
id: barCategoryAxis
categories: ["2023", "2024", "2025"]
}
ValueAxis {
id: valueAxis
min: 0
max: 10
}
BarSeries {
id: barSeries
BarSet { id: set1; label: "Set1"; values: [2, 2, 3] }
BarSet { id: set2; label: "Set2"; values: [5, 1, 2] }
BarSet { id: set3; label: "Set3"; values: [3, 5, 8] }
}
}

View File

@@ -0,0 +1,47 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtGraphs
GraphsView {
width: 300
height: 300
axisX: valueAxisX
axisY: valueAxisY
ValueAxis {
id: valueAxisX
min: 0
max: 10
}
ValueAxis {
id: valueAxisY
min: 0
max: 10
}
LineSeries {
id: lineSeries
XYPoint {
x: 0
y: 2
}
XYPoint {
x: 3
y: 1.2
}
XYPoint {
x: 7
y: 3.3
}
XYPoint {
x: 10
y: 2.1
}
}
}

View File

@@ -0,0 +1,17 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtGraphs
GraphsView {
width: 300
height: 300
PieSeries {
id: pieSeries
PieSlice { label: "Slice1"; value: 13.5 }
PieSlice { label: "Slice2"; value: 10.9 }
PieSlice { label: "Slice3"; value: 8.6 }
}
}

View File

@@ -0,0 +1,47 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtGraphs
GraphsView {
width: 300
height: 300
axisX: valueAxisX
axisY: valueAxisY
ValueAxis {
id: valueAxisX
min: 0
max: 10
}
ValueAxis {
id: valueAxisY
min: 0
max: 10
}
ScatterSeries {
id: lineSeries
XYPoint {
x: 0
y: 2
}
XYPoint {
x: 3
y: 1.2
}
XYPoint {
x: 7
y: 3.3
}
XYPoint {
x: 10
y: 2.1
}
}
}

View File

@@ -0,0 +1,47 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtGraphs
GraphsView {
width: 300
height: 300
axisX: valueAxisX
axisY: valueAxisY
ValueAxis {
id: valueAxisX
min: 0
max: 10
}
ValueAxis {
id: valueAxisY
min: 0
max: 10
}
SplineSeries {
id: lineSeries
XYPoint {
x: 0
y: 2
}
XYPoint {
x: 3
y: 1.2
}
XYPoint {
x: 7
y: 3.3
}
XYPoint {
x: 10
y: 2.1
}
}
}

View File

@@ -0,0 +1,17 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtCharts
ChartView {
width: 300
height: 300
HorizontalBarSeries {
name: "HorizontalBarSeries"
BarSet { label: "Set1"; values: [2, 2, 3] }
BarSet { label: "Set2"; values: [5, 1, 2] }
BarSet { label: "Set3"; values: [3, 5, 8] }
}
}

View File

@@ -0,0 +1,17 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtCharts
ChartView {
width: 300
height: 300
HorizontalPercentBarSeries {
name: "HorizontalPercentBarSeries"
BarSet { label: "Set1"; values: [2, 2, 3] }
BarSet { label: "Set2"; values: [5, 1, 2] }
BarSet { label: "Set3"; values: [3, 5, 8] }
}
}

View File

@@ -0,0 +1,17 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtCharts
ChartView {
width: 300
height: 300
HorizontalStackedBarSeries {
name: "HorizontalStackedBarSeries"
BarSet { label: "Set1"; values: [2, 2, 3] }
BarSet { label: "Set2"; values: [5, 1, 2] }
BarSet { label: "Set3"; values: [3, 5, 8] }
}
}

View File

@@ -0,0 +1,18 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtCharts
ChartView {
width: 300
height: 300
LineSeries {
name: "LineSeries"
XYPoint { x: 0; y: 2 }
XYPoint { x: 1; y: 1.2 }
XYPoint { x: 2; y: 3.3 }
XYPoint { x: 5; y: 2.1 }
}
}

View File

@@ -0,0 +1,17 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtCharts
ChartView {
width: 300
height: 300
PercentBarSeries {
name: "PercentBarSeries"
BarSet { label: "Set1"; values: [2, 2, 3] }
BarSet { label: "Set2"; values: [5, 1, 2] }
BarSet { label: "Set3"; values: [3, 5, 8] }
}
}

View File

@@ -0,0 +1,17 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtCharts
ChartView {
width: 300
height: 300
PieSeries {
name: "PieSeries"
PieSlice { label: "Slice1"; value: 13.5 }
PieSlice { label: "Slice2"; value: 10.9 }
PieSlice { label: "Slice3"; value: 8.6 }
}
}

View File

@@ -0,0 +1,48 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtCharts
PolarChartView {
width: 300
height: 300
legend.visible: false
ValueAxis {
id: axis1
tickCount: 9
}
ValueAxis {
id: axis2
}
LineSeries {
id: lowerLine
axisAngular: axis1
axisRadial: axis2
XYPoint { x: 1; y: 5 }
XYPoint { x: 2; y: 10 }
XYPoint { x: 3; y: 12 }
XYPoint { x: 4; y: 17 }
XYPoint { x: 5; y: 20 }
}
LineSeries {
id: upperLine
axisAngular: axis1
axisRadial: axis2
XYPoint { x: 1; y: 5 }
XYPoint { x: 2; y: 14 }
XYPoint { x: 3; y: 20 }
XYPoint { x: 4; y: 32 }
XYPoint { x: 5; y: 35 }
}
AreaSeries {
name: "AreaSeries"
axisAngular: axis1
axisRadial: axis2
lowerSeries: lowerLine
upperSeries: upperLine
}
}

View File

@@ -0,0 +1,27 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtCharts
PolarChartView {
width: 300
height: 300
LineSeries {
name: "LineSeries"
axisRadial: CategoryAxis {
min: 0
max: 20
}
axisAngular: ValueAxis {
tickCount: 9
}
XYPoint { x: 0; y: 4.3 }
XYPoint { x: 2; y: 4.7 }
XYPoint { x: 4; y: 5.2 }
XYPoint { x: 6; y: 6.1 }
XYPoint { x: 8; y: 12.9 }
XYPoint { x: 9; y: 19.2 }
}
}

View File

@@ -0,0 +1,26 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtCharts
PolarChartView {
width: 300
height: 300
ScatterSeries {
name: "ScatterSeries"
axisRadial: CategoryAxis {
min: 0
max: 20
}
axisAngular: ValueAxis {
tickCount: 9
}
XYPoint { x: 0; y: 4.3 }
XYPoint { x: 2; y: 4.7 }
XYPoint { x: 4; y: 5.2 }
XYPoint { x: 8; y: 12.9 }
XYPoint { x: 9; y: 19.2 }
}
}

View File

@@ -0,0 +1,27 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtCharts
PolarChartView {
width: 300
height: 300
SplineSeries {
name: "SplineSeries"
axisRadial: CategoryAxis {
min: 0
max: 20
}
axisAngular: ValueAxis {
tickCount: 9
}
XYPoint { x: 0; y: 4.3 }
XYPoint { x: 2; y: 4.7 }
XYPoint { x: 4; y: 5.2 }
XYPoint { x: 6; y: 6.1 }
XYPoint { x: 8; y: 12.9 }
XYPoint { x: 9; y: 19.2 }
}
}

View File

@@ -0,0 +1,28 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtQuick3D
import QtGraphs
Scatter3D {
id: scatter3d
width: 300
height: 300
Scatter3DSeries {
id: scatter3dSeries
ItemModelScatterDataProxy {
id: scatterDataProxy
itemModel: ListModel {
ListElement{ x: "1"; y: "2"; z: "3"; }
ListElement{ x: "2"; y: "3"; z: "4"; }
ListElement{ x: "3"; y: "4"; z: "1"; }
}
xPosRole: "x"
yPosRole: "y"
zPosRole: "z"
}
}
}

View File

@@ -0,0 +1,18 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtCharts
ChartView {
width: 300
height: 300
ScatterSeries {
name: "ScatterSeries"
XYPoint { x: 1; y: 1 }
XYPoint { x: 2; y: 4 }
XYPoint { x: 4; y: 2 }
XYPoint { x: 5; y: 5 }
}
}

View File

@@ -0,0 +1,18 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtCharts
ChartView {
width: 300
height: 300
SplineSeries {
name: "SplineSeries"
XYPoint { x: 0; y: 1 }
XYPoint { x: 3; y: 4.3 }
XYPoint { x: 5; y: 3.1 }
XYPoint { x: 8; y: 5.8 }
}
}

View File

@@ -0,0 +1,17 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtCharts
ChartView {
width: 300
height: 300
StackedBarSeries {
name: "StackedBarSeries"
BarSet { label: "Set1"; values: [2, 2, 3] }
BarSet { label: "Set2"; values: [5, 1, 2] }
BarSet { label: "Set3"; values: [3, 5, 8] }
}
}

View File

@@ -0,0 +1,28 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtQuick3D
import QtGraphs
Surface3D {
id: surface3d
width: 300
height: 300
Surface3DSeries {
id: surface3dSeries
ItemModelSurfaceDataProxy {
id: surfaceDataProxy
itemModel: ListModel {
ListElement{ row: "1"; column: "1"; y: "1"; }
ListElement{ row: "1"; column: "2"; y: "2"; }
ListElement{ row: "2"; column: "1"; y: "3"; }
ListElement{ row: "2"; column: "2"; y: "4"; }
}
rowRole: "row"
columnRole: "column"
yPosRole: "y"
}
}
}

View File

@@ -0,0 +1,156 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtQuick.Layouts
import QtQuickDesignerTheme
import HelperWidgets
import StudioTheme as StudioTheme
Rectangle {
id: itemPane
width: 320
height: 400
color: Theme.qmlDesignerBackgroundColorDarkAlternate()
Component.onCompleted: Controller.mainScrollView = mainScrollView
MouseArea {
anchors.fill: parent
onClicked: forceActiveFocus()
}
ScrollView {
id: mainScrollView
clip: true
anchors.fill: parent
Column {
id: mainColumn
y: -1
width: itemPane.width
onWidthChanged: StudioTheme.Values.responsiveResize(itemPane.width)
Component.onCompleted: StudioTheme.Values.responsiveResize(itemPane.width)
ComponentSection {}
Section {
caption: qsTr("Safe Image")
anchors.left: parent.left
anchors.right: parent.right
SectionLayout {
PropertyLabel { text: qsTr("Position") }
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
backendValue: backendValues.x
maximumValue: 0xffff
minimumValue: -0xffff
decimals: 0
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel { text: "X" }
Spacer { implicitWidth: StudioTheme.Values.controlGap }
SpinBox {
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
backendValue: backendValues.y
maximumValue: 0xffff
minimumValue: -0xffff
decimals: 0
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel { text: "Y" }
ExpandingSpacer {}
}
PropertyLabel { text: qsTr("Size") }
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
backendValue: backendValues.width
maximumValue: 0xffff
minimumValue: 1
decimals: 0
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
//: The width of the object
text: qsTr("W", "width")
}
Spacer { implicitWidth: StudioTheme.Values.controlGap }
SpinBox {
id: heightSpinBox
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
backendValue: backendValues.height
maximumValue: 0xffff
minimumValue: 1
decimals: 0
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
//: The height of the object
text: qsTr("H", "height")
}
ExpandingSpacer {}
}
PropertyLabel { text: qsTr("Source") }
SecondColumnLayout {
UrlChooser {
backendValue: backendValues.source
}
ExpandingSpacer {}
}
PropertyLabel { text: qsTr("fillColor") }
ColorEditor {
backendValue: backendValues.fillColor
supportGradient: false
}
PropertyLabel { text: qsTr("Opacity") }
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
sliderIndicatorVisible: true
backendValue: backendValues.opacity
decimals: 2
minimumValue: 0
maximumValue: 1
hasSlider: true
stepSize: 0.1
}
ExpandingSpacer {}
}
}
}
}
}
}

View File

@@ -0,0 +1,163 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtQuick.Layouts
import QtQuickDesignerTheme
import HelperWidgets
import StudioTheme as StudioTheme
Rectangle {
id: itemPane
width: 320
height: 400
color: Theme.qmlDesignerBackgroundColorDarkAlternate()
Component.onCompleted: Controller.mainScrollView = mainScrollView
MouseArea {
anchors.fill: parent
onClicked: forceActiveFocus()
}
ScrollView {
id: mainScrollView
clip: true
anchors.fill: parent
Column {
id: mainColumn
y: -1
width: itemPane.width
onWidthChanged: StudioTheme.Values.responsiveResize(itemPane.width)
Component.onCompleted: StudioTheme.Values.responsiveResize(itemPane.width)
ComponentSection {}
Section {
caption: qsTr("Safe Picture")
anchors.left: parent.left
anchors.right: parent.right
SectionLayout {
PropertyLabel { text: qsTr("Position") }
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
backendValue: backendValues.x
maximumValue: 0xffff
minimumValue: -0xffff
decimals: 0
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel { text: "X" }
Spacer { implicitWidth: StudioTheme.Values.controlGap }
SpinBox {
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
backendValue: backendValues.y
maximumValue: 0xffff
minimumValue: -0xffff
decimals: 0
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel { text: "Y" }
ExpandingSpacer {}
}
PropertyLabel { text: qsTr("Size") }
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
backendValue: backendValues.width
maximumValue: 0xffff
minimumValue: 1
decimals: 0
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
//: The width of the object
text: qsTr("W", "width")
}
Spacer { implicitWidth: StudioTheme.Values.controlGap }
SpinBox {
id: heightSpinBox
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
backendValue: backendValues.height
maximumValue: 0xffff
minimumValue: 1
decimals: 0
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
//: The height of the object
text: qsTr("H", "height")
}
ExpandingSpacer {}
}
PropertyLabel { text: qsTr("Source") }
SecondColumnLayout {
UrlChooser {
backendValue: backendValues.source
}
ExpandingSpacer {}
}
PropertyLabel { text: qsTr("Color") }
ColorEditor {
backendValue: backendValues.color
supportGradient: false
}
PropertyLabel { text: qsTr("fillColor") }
ColorEditor {
backendValue: backendValues.fillColor
supportGradient: false
}
PropertyLabel { text: qsTr("Opacity") }
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
sliderIndicatorVisible: true
backendValue: backendValues.opacity
decimals: 2
minimumValue: 0
maximumValue: 1
hasSlider: true
stepSize: 0.1
}
ExpandingSpacer {}
}
}
}
}
}
}

View File

@@ -0,0 +1,269 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtQuick.Layouts
import QtQuickDesignerTheme
import HelperWidgets
import StudioTheme as StudioTheme
Rectangle {
id: itemPane
width: 320
height: 400
color: Theme.qmlDesignerBackgroundColorDarkAlternate()
Component.onCompleted: Controller.mainScrollView = mainScrollView
MouseArea {
anchors.fill: parent
onClicked: forceActiveFocus()
}
ScrollView {
id: mainScrollView
clip: true
anchors.fill: parent
Column {
id: mainColumn
y: -1
width: itemPane.width
onWidthChanged: StudioTheme.Values.responsiveResize(itemPane.width)
Component.onCompleted: StudioTheme.Values.responsiveResize(itemPane.width)
ComponentSection {}
Section {
caption: qsTr("Safe Text")
anchors.left: parent.left
anchors.right: parent.right
SectionLayout {
PropertyLabel { text: qsTr("Position") }
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
backendValue: backendValues.x
maximumValue: 0xffff
minimumValue: -0xffff
decimals: 0
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel { text: "X" }
Spacer { implicitWidth: StudioTheme.Values.controlGap }
SpinBox {
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
backendValue: backendValues.y
maximumValue: 0xffff
minimumValue: -0xffff
decimals: 0
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel { text: "Y" }
ExpandingSpacer {}
}
PropertyLabel { text: qsTr("Size") }
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
backendValue: backendValues.width
maximumValue: 0xffff
minimumValue: 1
decimals: 0
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
//: The width of the object
text: qsTr("W", "width")
}
Spacer { implicitWidth: StudioTheme.Values.controlGap }
SpinBox {
id: heightSpinBox
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
backendValue: backendValues.height
maximumValue: 0xffff
minimumValue: 1
decimals: 0
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
//: The height of the object
text: qsTr("H", "height")
}
ExpandingSpacer {}
}
PropertyLabel { text: qsTr("Text") }
SecondColumnLayout {
LineEdit {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
width: implicitWidth
backendValue: backendValues.text
}
ExpandingSpacer {}
}
PropertyLabel { text: qsTr("Color") }
ColorEditor {
backendValue: backendValues.color
supportGradient: false
}
PropertyLabel { text: qsTr("fillColor") }
ColorEditor {
backendValue: backendValues.fillColor
supportGradient: false
}
PropertyLabel { text: qsTr("Opacity") }
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
sliderIndicatorVisible: true
backendValue: backendValues.opacity
decimals: 2
minimumValue: 0
maximumValue: 1
hasSlider: true
stepSize: 0.1
}
ExpandingSpacer {}
}
PropertyLabel { text: qsTr("Font") }
SecondColumnLayout {
FontComboBox {
id: fontComboBox
property string familyName: backendValue.value
backendValue: backendValues.font_family
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
width: implicitWidth
}
ExpandingSpacer {}
}
PropertyLabel { text: qsTr("Size") }
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
backendValue: backendValues.font_pixelSize
minimumValue: 0
maximumValue: 400
decimals: 0
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel { text: "px" }
ExpandingSpacer {}
}
PropertyLabel { text: qsTr("Emphasis") }
SecondColumnLayout {
BoolButtonRowButton {
id: boldButton
buttonIcon: StudioTheme.Constants.fontStyleBold
backendValue: backendValues.font_bold
}
Spacer {
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
- (boldButton.implicitWidth + italicButton.implicitWidth)
}
BoolButtonRowButton {
id: italicButton
buttonIcon: StudioTheme.Constants.fontStyleItalic
backendValue: backendValues.font_italic
}
ExpandingSpacer {}
}
PropertyLabel { text: qsTr("Alignment H") }
SecondColumnLayout {
AlignmentHorizontalButtons {
scope: "SafeText"
}
ExpandingSpacer {}
}
PropertyLabel { text: qsTr("Alignment V") }
SecondColumnLayout {
AlignmentVerticalButtons {
scope: "SafeText"
}
ExpandingSpacer {}
}
PropertyLabel { text: qsTr("Wrap mode") }
SecondColumnLayout {
ComboBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
width: implicitWidth
backendValue: backendValues.wrapMode
scope: "SafeText"
model: ["NoWrap", "WordWrap", "WrapAnywhere", "Wrap"]
enabled: backendValue.isAvailable
}
ExpandingSpacer {}
}
PropertyLabel { text: qsTr("Dynamic") }
SecondColumnLayout {
CheckBox {
text: backendValue.valueToString
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
backendValue: backendValues.runtimeEditable
}
ExpandingSpacer {}
}
}
}
}
}
}

View File

@@ -0,0 +1,123 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtQuick.Layouts
import HelperWidgets
import StudioTheme as StudioTheme
Column {
width: parent.width
Section {
caption: qsTr("Title")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Title")
}
SecondColumnLayout {
LineEdit {
backendValue: backendValues.title
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Color")
}
ColorEditor {
backendValue: backendValues.titleColor
supportGradient: false
}
}
}
Section {
width: parent.width
caption: qsTr("Background")
SectionLayout {
PropertyLabel {
text: qsTr("Color")
}
ColorEditor {
backendValue: backendValues.backgroundColor
supportGradient: false
}
PropertyLabel {
text: qsTr("Roundness")
tooltip: qsTr("Diameter of the rounding circle at the corners")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.backgroundRoundness
minimumValue: 0.1
maximumValue: 100.0
stepSize: 0.1
decimals: 1
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Drop Shadow")
tooltip: qsTr("Enable border drop shadow")
}
SecondColumnLayout {
CheckBox {
text: backendValues.dropShadowEnabled.valueToString
backendValue: backendValues.dropShadowEnabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
}
}
Section {
width: parent.width
caption: qsTr("Plot Area")
SectionLayout {
PropertyLabel {
text: qsTr("Color")
}
ColorEditor {
backendValue: backendValues.plotAreaColor
supportGradient: false
}
}
}
Section {
width: parent.width
caption: qsTr("Localization")
SectionLayout {
PropertyLabel {
text: qsTr("Localize Numbers")
}
SecondColumnLayout {
CheckBox {
text: backendValues.localizeNumbers.valueToString
backendValue: backendValues.localizeNumbers
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
}
}
}

View File

@@ -0,0 +1,276 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import HelperWidgets
import QtQuick.Layouts
import StudioTheme as StudioTheme
import QtQuick.Controls as Controls
Column {
width: parent.width
Section {
width: parent.width
caption: qsTr("Bars")
SectionLayout {
PropertyLabel {
text: qsTr("Uniform Scaling")
tooltip: qsTr("Proportionally scale multiple series")
}
SecondColumnLayout {
CheckBox {
backendValue: backendValues.multiSeriesUniform
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Thickness")
tooltip: qsTr("Thickness ratio between X and Z dimension")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.barThickness
minimumValue: 0.01
maximumValue: 100.0
stepSize: 0.01
decimals: 2
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Spacing")
tooltip: qsTr("Bar spacing in the X and Z dimensions")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.barSpacing_width
minimumValue: 0.0
maximumValue: 10.0
stepSize: 0.01
decimals: 2
implicitWidth: StudioTheme.Values.singleControlColumnWidth
- StudioTheme.Values.actionIndicatorWidth
}
ControlLabel {
text: qsTr("Col")
width: StudioTheme.Values.actionIndicatorWidth * 2
}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.barSpacing_height
minimumValue: 0.0
maximumValue: 10.0
stepSize: 0.01
decimals: 2
implicitWidth: StudioTheme.Values.singleControlColumnWidth
- StudioTheme.Values.actionIndicatorWidth
}
ControlLabel {
text: qsTr("Row")
width: StudioTheme.Values.actionIndicatorWidth * 2
}
}
PropertyLabel {
text: qsTr("Relative Spacing")
tooltip: qsTr("Set bar spacing relative to thickness")
}
SecondColumnLayout {
CheckBox {
backendValue: backendValues.barSpacingRelative
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Series Margin")
tooltip: qsTr("Margin between series columns in X and Z dimensions")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.barSeriesMargin_width
minimumValue: 0.0
maximumValue: 1.0
stepSize: 0.01
decimals: 2
implicitWidth: StudioTheme.Values.singleControlColumnWidth
- StudioTheme.Values.actionIndicatorWidth
}
ControlLabel {
text: qsTr("Col")
width: StudioTheme.Values.actionIndicatorWidth * 2
}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.barSeriesMargin_height
minimumValue: 0.0
maximumValue: 1.0
stepSize: 0.01
decimals: 2
implicitWidth: StudioTheme.Values.singleControlColumnWidth
- StudioTheme.Values.actionIndicatorWidth
}
ControlLabel {
text: qsTr("Row")
width: StudioTheme.Values.actionIndicatorWidth * 2
}
}
PropertyLabel {
text: qsTr("Floor Level")
tooltip: qsTr("Floor level in Y-axis data coordinates")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.floorLevel
minimumValue: 0.0
maximumValue: 999999
stepSize: 0.1
decimals: 2
implicitWidth: StudioTheme.Values.singleControlColumnWidth
- StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Selection Mode")
tooltip: qsTr("Bar selection mode")
}
SecondColumnLayout {
id: selectionLayout
property bool isInModel: backendValue.isInModel;
property bool isInSubState: backendValue.isInSubState;
property bool selectionChangedFlag: selectionChanged
property variant backendValue: backendValues.selectionMode
property variant valueFromBackend: backendValue.value
property string enumScope: "Graphs3D.SelectionFlag"
property string enumSeparator: " | "
property int checkedCount: 0
property bool item: false
property bool row: false
property bool column: false
property bool slice: false
property bool multi: false
function checkValue(checkedVariable, variableText, expressionBase) {
var expressionStr = expressionBase
if (checkedVariable) {
if (expressionStr !== "") {
expressionStr += enumSeparator
}
expressionStr += enumScope
expressionStr += "."
expressionStr += variableText
checkedCount++
}
return expressionStr
}
function composeSelectionMode() {
var expressionStr = ""
checkedCount = 0
expressionStr = checkValue(item, "Item", expressionStr)
expressionStr = checkValue(row, "Row", expressionStr)
expressionStr = checkValue(column, "Column", expressionStr)
expressionStr = checkValue(slice, "Slice", expressionStr)
expressionStr = checkValue(multi, "MultiSeries", expressionStr)
if (checkedCount === 0)
backendValue.expression = enumScope + ".None"
else
backendValue.expression = expressionStr
}
function evaluate() {
if (backendValue.value === undefined)
return
item = (backendValue.expression.indexOf("Item") !== -1)
row = (backendValue.expression.indexOf("Row") !== -1)
column = (backendValue.expression.indexOf("Column") !== -1)
slice = (backendValue.expression.indexOf("Slice") !== -1)
multi = (backendValue.expression.indexOf("MultiSeries") !== -1)
itemBox.checked = item
rowBox.checked = row
columnBox.checked = column
sliceBox.checked = slice
multiSeriesBox.checked = multi
}
onSelectionChangedFlagChanged: evaluate()
onIsInModelChanged: evaluate()
onIsInSubStateChanged: evaluate()
onBackendValueChanged: evaluate()
onValueFromBackendChanged: evaluate()
ColumnLayout {
anchors.fill: parent
Controls.CheckBox {
id: itemBox
text: "Item"
Layout.fillWidth: true
onClicked: {
selectionLayout.item = checked
selectionLayout.composeSelectionMode()
}
}
Controls.CheckBox {
id: rowBox
text: "Row"
Layout.fillWidth: true
onClicked: {
selectionLayout.row = checked
selectionLayout.composeSelectionMode()
}
}
Controls.CheckBox {
id: columnBox
text: "Column"
Layout.fillWidth: true
onClicked: {
selectionLayout.column = checked
selectionLayout.composeSelectionMode()
}
}
Controls.CheckBox {
id: sliceBox
text: "Slice"
Layout.fillWidth: true
onClicked: {
selectionLayout.slice = checked
selectionLayout.composeSelectionMode()
}
}
Controls.CheckBox {
id: multiSeriesBox
text: "MultiSeries"
Layout.fillWidth: true
onClicked: {
selectionLayout.multi = checked
selectionLayout.composeSelectionMode()
}
}
}
}
}
}
GraphsSection {}
GraphsCameraSection {}
}

View File

@@ -0,0 +1,189 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import HelperWidgets
import QtQuick.Layouts
import StudioTheme as StudioTheme
Section {
width: parent.width
caption: qsTr("Camera")
SectionLayout {
PropertyLabel {
text: qsTr("Preset")
tooltip: qsTr("Camera preset")
}
SecondColumnLayout {
ComboBox {
backendValue: backendValues.cameraPreset
model: ["NoPreset", "FrontLow", "Front", "FrontHigh", "LeftLow",
"Left", "LeftHigh", "RightLow", "Right", "RightHigh", "BehindLow",
"Behind", "BehindHigh", "IsometricLeft", "IsometricLeftHigh",
"IsometricRight", "IsometricRightHigh", "DirectlyAbove",
"DirectlyAboveCW45", "DirectlyAboveCCW45", "FrontBelow",
"LeftBelow", "RightBelow", "BehindBelow", "DirectlyBelow"]
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
scope: "Graphs3D"
}
}
PropertyLabel {
text: qsTr("Target")
tooltip: qsTr("Camera target position")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.cameraTargetPosition_x
minimumValue: -1.0
maximumValue: 1.0
stepSize: 0.01
decimals: 2
implicitWidth: StudioTheme.Values.singleControlColumnWidth
}
ControlLabel {
text: "X"
width: StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.cameraTargetPosition_y
minimumValue: -1.0
maximumValue: 1.0
stepSize: 0.01
decimals: 2
implicitWidth: StudioTheme.Values.singleControlColumnWidth
}
ControlLabel {
text:"Y"
width: StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.cameraTargetPosition_z
minimumValue: -1.0
maximumValue: 1.0
stepSize: 0.01
decimals: 2
implicitWidth: StudioTheme.Values.singleControlColumnWidth
}
ControlLabel {
text: "Z"
width: StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Zoom")
tooltip: qsTr("Camera zoom level")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.cameraZoomLevel
minimumValue: 0
maximumValue: 500
stepSize: 1
decimals: 0
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Min Zoom")
tooltip: qsTr("Camera minimum zoom")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.minCameraZoomLevel
minimumValue: 0
maximumValue: 500
stepSize: 1
decimals: 0
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Max Zoom")
tooltip: qsTr("Camera maximum zoom")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.maxCameraZoomLevel
minimumValue: 0
maximumValue: 500
stepSize: 1
decimals: 0
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("X Rotation")
tooltip: qsTr("Camera X rotation")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.cameraXRotation
minimumValue: -180
maximumValue: 180
stepSize: 1
decimals: 0
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Wrap X")
tooltip: qsTr("Wrap camera X rotation")
}
SecondColumnLayout {
CheckBox {
backendValue: backendValues.wrapCameraXRotation
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Y Rotation")
tooltip: qsTr("Camera Y rotation")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.cameraYRotation
minimumValue: 0
maximumValue: 90
stepSize: 1
decimals: 0
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Wrap Y")
tooltip: qsTr("Wrap camera Y rotation")
}
SecondColumnLayout {
CheckBox {
backendValue: backendValues.wrapCameraYRotation
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Orthographic")
tooltip: qsTr("Use orthographic camera")
}
SecondColumnLayout {
CheckBox {
backendValue: backendValues.orthoProjection
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
}
}

View File

@@ -0,0 +1,124 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import HelperWidgets
import QtQuick.Layouts
import StudioTheme as StudioTheme
Section {
width: parent.width
caption: qsTr("Graph")
SectionLayout {
PropertyLabel {
text: qsTr("Render Mode")
tooltip: qsTr("Rendering mode")
}
SecondColumnLayout {
ComboBox {
backendValue: backendValues.renderingMode
model: ["Indirect", "DirectToBackground"]
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
scope: "Graphs3D"
}
}
PropertyLabel {
text: qsTr("Shadow Quality")
tooltip: qsTr("Quality and style of the shadows")
}
SecondColumnLayout {
ComboBox {
backendValue: backendValues.shadowQuality
model: ["None", "Low", "Medium",
"High", "SoftLow", "SoftMedium",
"SoftHigh"]
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
scope: "Graphs3D"
}
}
PropertyLabel {
text: qsTr("Optimization")
tooltip: qsTr("Optimization hint")
}
SecondColumnLayout {
ComboBox {
backendValue: backendValues.optimizationHint
model: ["Default", "Legacy"]
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
scope: "Graphs3D"
}
}
PropertyLabel {
text: qsTr("MSAA")
tooltip: qsTr("Multisample anti-aliasing sample count")
}
SpinBox {
backendValue: backendValues.msaaSamples
minimumValue: 0
maximumValue: 8
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
PropertyLabel {
text: qsTr("Aspect Ratio")
tooltip: qsTr("Horizontal to vertical aspect ratio")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.aspectRatio
minimumValue: 0.1
maximumValue: 10.0
stepSize: 0.1
decimals: 1
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Horizontal AR")
tooltip: qsTr("Horizontal aspect ratio")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.horizontalAspectRatio
minimumValue: 0.1
maximumValue: 10.0
stepSize: 0.1
decimals: 1
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Margin")
tooltip: qsTr("Graph background margin")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.margin
minimumValue: -1.0
maximumValue: 100.0
stepSize: 0.1
decimals: 1
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Measure FPS")
tooltip: qsTr("Measure rendering speed as Frames Per Second")
}
SecondColumnLayout {
CheckBox {
backendValue: backendValues.measureFps
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
}
}

View File

@@ -0,0 +1,103 @@
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import HelperWidgets
import QtQuick.Layouts
import StudioTheme as StudioTheme
Column {
width: parent.width
Section {
width: parent.width
caption: qsTr("Background")
SectionLayout {
PropertyLabel {
text: qsTr("Color")
}
ColorEditor {
backendValue: backendValues.backgroundColor
supportGradient: false
}
}
}
Section {
width: parent.width
caption: qsTr("Margins")
SectionLayout {
rows: 4
PropertyLabel {
text: qsTr("Top")
tooltip: qsTr("The amount of empty space on the top of the graph.")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.marginTop
minimumValue: 0.0
maximumValue: 9999.0
stepSize: 1.0
decimals: 1
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Bottom")
tooltip: qsTr("The amount of empty space on the bottom of the graph.")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.marginBottom
minimumValue: 0.0
maximumValue: 9999.0
stepSize: 1.0
decimals: 1
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Left")
tooltip: qsTr("The amount of empty space on the left of the graph.")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.marginLeft
minimumValue: 0.0
maximumValue: 9999.0
stepSize: 1.0
decimals: 1
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Right")
tooltip: qsTr("The amount of empty space on the right of the graph.")
}
SecondColumnLayout {
SpinBox {
backendValue: backendValues.marginRight
minimumValue: 0.0
maximumValue: 9999.0
stepSize: 1.0
decimals: 1
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
}
}
}

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