1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
// Copyright (C) 2026 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.10
/*!
\qmltype MinMaxMapper
\inqmlmodule QtQuick.Studio.LogicHelper
\since QtQuick.Studio.LogicHelper 1.0
\inherits QtObject
\brief Provides access to values that are out or range.
The MinMaxMapper type has output values even if the input value is out
of range or too small or big. This enables applying actions to values
even if they are out of range, such as changing a color in a state.
To access the values of a control, the \l input property of the
minimum-maximum mapper is bound to that of the \c value property
of the control.
For example, to restrict the maximum value of a slider to 0.60,
regardless of the maximum value set in the slider properties,
we bind the value of the \l input property of the mapper to
the value of the \c value property of the slider and set the value
of the \l maximum property to 0.60.
The \l outOfRange, \l aboveMaximum and \l belowMinimum properties are set to
\c true if the value of the \l input property is out of range.
For example, in the context of speed, \l aboveMaximum being \c true
would mean \e {too fast}, whereas \l belowMinimum being \c true would
mean \e {too slow}, and \l outOfRange being \c true would mean
\e {either too fast or too slow}.
Designers can use the Min Max Mapper type in \QDS instead of writing
JavaScript expressions.
\section1 Example Usage
In the following example, we use the MinMaxMapper type to restrict the
maximum value of a \l Slider type to 0.60, regardless of the maximum
value set in the Slider properties:
\code
Rectangle {
Slider {
id: slider
value: 0.5
}
MinMaxMapper {
id: minMaxMapper
input: slider.value
maximum: 0.6
}
}
\endcode
*/
QtObject {
id: object
/*!
The input value.
*/
property real input: 0
/*!
Whether \l input is less than \l minimum.
*/
property bool belowMinimum: object.input < object.minimum
/*!
Whether \l input is larger than \l maximum.
*/
property bool aboveMaximum: object.input > object.maximum
/*!
Whether \l input is out of range. Returns \c true if \l belowMinimum or
\l aboveMaximum is \c true.
*/
property bool outOfRange: object.aboveMaximum ||object.belowMinimum
/*!
The value of \l input. If \l aboveMaximum is \c true, returns the value of
\l maximum. If \l belowMinimum is \c true, returns the value of \l minimum.
*/
property real output: {
if (object.aboveMaximum)
return object.maximum
if (object.belowMinimum)
return object.minimum
return object.input
}
/*!
The minimum value of \l input.
*/
property real minimum: 0
/*!
The maximum value of \l input.
*/
property real maximum: 100
}
|