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 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
// Copyright (C) 2019 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
Rectangle {
id: root
property real time: time.sliderValue
property real amplitude: amplitude.sliderValue
property real alpha: alpha.sliderValue
property bool animateRotation: animControl.checkBoxSet
property bool texturing: texControl.checkBoxSet
property bool textureFromItem : texControl2.checkBoxSet
color: "#6b7080"
width: parent.width
height: 75
component PropertySlider : RowLayout {
id: sliderRoot
required property string name
required property real sliderValue
required property real fromValue
required property real toValue
Label {
id: propText
text: sliderRoot.name
color: "#222840"
font.pointSize: 12
}
Slider {
id: slider
from: sliderRoot.fromValue
to: sliderRoot.toValue
value: sliderRoot.sliderValue
stepSize: 0.01
onValueChanged: sliderRoot.sliderValue = value
Layout.minimumWidth: 100
Layout.maximumWidth: 200
background: Rectangle {
x: slider.leftPadding
y: slider.topPadding + slider.availableHeight / 2 - height / 2
implicitWidth: 120
implicitHeight: 4
width: slider.availableWidth
height: implicitHeight
radius: 1
color: "#222840"
Rectangle {
width: slider.visualPosition * parent.width
height: parent.height
color: "#848895"
radius: 1
}
}
handle: Rectangle {
x: slider.leftPadding + slider.visualPosition * (slider.availableWidth - width)
y: slider.topPadding + slider.availableHeight / 2 - height / 2
implicitWidth: 20
implicitHeight: 20
radius: 5
color: slider.pressed ? "#222840" : "#6b7080"
border.color: "#848895"
}
}
Label {
id: valueText
text: slider.value.toFixed(2)
color: "#222840"
font.pointSize: 12
font.bold: true
Layout.minimumWidth: 40
Layout.maximumWidth: 40
}
}
component PropertyCheckBox : RowLayout {
id: checkBoxRoot
required property string checkBoxText
required property bool checkBoxSet
Label {
text: checkBoxRoot.checkBoxText
font.pointSize: 12
font.bold: true
}
CheckBox {
checked: false
onCheckedChanged: checkBoxRoot.checkBoxSet = checked
}
}
ScrollBar {
id: hbar
policy: parent.width < columnLayout.width ? ScrollBar.AlwaysOn : ScrollBar.AsNeeded
orientation: Qt.Horizontal
size: parent.width / columnLayout.width
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
}
ColumnLayout {
id: columnLayout
readonly property int leftMargin: 25
x: leftMargin - hbar.position * width
RowLayout {
spacing: 10
PropertySlider {
id: time
sliderValue: 0.0
name: "Time"
fromValue: 0.0
toValue: 1.0
}
PropertySlider {
id: amplitude
sliderValue: 5.0
name: "Amplitude"
fromValue: 1.0
toValue: 20.0
}
PropertySlider {
id: alpha
sliderValue: 1.0
name: "Alpha"
fromValue: 0.0
toValue: 1.0
}
PropertyCheckBox {
id: animControl
checkBoxText: "Rotate"
checkBoxSet: false
}
PropertyCheckBox {
id: texControl
checkBoxText: "Texture"
checkBoxSet: false
}
Layout.rightMargin: texControl.checkBoxSet ? 0 : texControl2.width + 10
PropertyCheckBox {
id: texControl2
visible: texControl.checkBoxSet
checkBoxText: "Texture with Item"
checkBoxSet: false
}
}
}
}
|