properly styled switch to not look like ass
This commit is contained in:
parent
c277bc6938
commit
135446ab82
2 changed files with 37 additions and 22 deletions
|
|
@ -5,39 +5,51 @@ import QtQuick.Controls
|
||||||
Switch {
|
Switch {
|
||||||
id: control
|
id: control
|
||||||
|
|
||||||
|
contentItem: Text {
|
||||||
|
id: text
|
||||||
|
rightPadding: control.indicator.width + control.spacing
|
||||||
|
text: control.text
|
||||||
|
font: control.font
|
||||||
|
opacity: enabled ? 1.0 : 0.3
|
||||||
|
color: Theme.palette.basecontent
|
||||||
|
elide: Text.ElideRight
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
HoverHandler {
|
HoverHandler {
|
||||||
cursorShape: Qt.PointingHandCursor
|
cursorShape: Qt.PointingHandCursor
|
||||||
}
|
}
|
||||||
|
|
||||||
indicator: Item {
|
indicator: Rectangle {
|
||||||
|
id: indicator
|
||||||
|
|
||||||
|
property int padding: 8
|
||||||
|
|
||||||
implicitWidth: 48
|
implicitWidth: 48
|
||||||
implicitHeight: 22
|
implicitHeight: 24
|
||||||
Rectangle {
|
x: control.width - width - control.rightPadding
|
||||||
implicitWidth: parent.width
|
|
||||||
implicitHeight: parent.height - 4
|
|
||||||
x: control.leftPadding
|
|
||||||
y: parent.height / 2 - height / 2
|
y: parent.height / 2 - height / 2
|
||||||
radius: 6
|
radius: 16
|
||||||
color: control.checked ? Theme.palette.primary : Theme.palette.base100
|
color: "transparent"
|
||||||
Behavior on color {
|
border.color: control.checked ? Theme.palette.primary : Theme.palette.basecontent
|
||||||
ColorAnimation {
|
border.width: 2
|
||||||
duration: 150
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
x: control.checked ? parent.width - 3 * width / 4 : width / 4
|
anchors.margins: 4
|
||||||
|
x: control.checked ? parent.width - width - indicator.padding / 2 : indicator.padding / 2
|
||||||
y: parent.height / 2 - height / 2
|
y: parent.height / 2 - height / 2
|
||||||
Behavior on x {
|
Behavior on x {
|
||||||
NumberAnimation {
|
NumberAnimation {
|
||||||
duration: 150
|
duration: 100
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
width: 22
|
width: parent.width / 2 - indicator.padding
|
||||||
height: 22
|
height: parent.height - indicator.padding
|
||||||
radius: 6
|
radius: 16
|
||||||
color: Theme.palette.basecontent
|
color: control.checked ? Theme.palette.primary : Theme.palette.basecontent
|
||||||
|
// border.color: control.checked ? (control.down ? "#17a81a" : "#21be2b") : "#999999"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
background: undefined
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,10 @@ StyledWindow {
|
||||||
text: "Switch"
|
text: "Switch"
|
||||||
font.pixelSize: 18
|
font.pixelSize: 18
|
||||||
}
|
}
|
||||||
StyledSwitch {}
|
|
||||||
|
StyledSwitch {
|
||||||
|
text: "Enable"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue