5import QtQuick.Templates as T
25 Accessible.role: Accessible.RadioButton
27 Accessible.checkable: true
28 Accessible.checked: checked
29 Accessible.focusable: enabled && focusPolicy !== Qt.NoFocus
30 Accessible.focused: activeFocus
31 Accessible.pressed: down
32 Accessible.onPressAction: {
38 property MD.typescale typescale: MD.Tokens.typescale.labelLarge
40 implicitWidth: Math.max(MD.Tokens.radioButton.minimumInteractiveSize,
41 implicitBackgroundWidth + leftInset + rightInset,
42 implicitContentWidth + leftPadding + rightPadding)
43 implicitHeight: Math.max(MD.Tokens.radioButton.minimumInteractiveSize,
44 implicitBackgroundHeight + topInset + bottomInset,
45 implicitContentHeight + topPadding + bottomPadding,
46 implicitIndicatorHeight + topPadding + bottomPadding)
48 padding: MD.Tokens.radioButton.contentPadding
49 spacing: MD.Tokens.radioButton.contentSpacing
52 focusPolicy: Qt.StrongFocus
57 property color iconColor: control.checked ? control.MD.Style.primaryColor
58 : control.MD.Style.onSurfaceVariantColor
59 property color labelColor: control.MD.Style.onSurfaceColor
60 property color stateLayerColor:
"transparent"
62 property real iconOpacity: 1.0
63 property real contentOpacity: 1.0
64 property real stateLayerOpacity: 0.0
70 when: !control.enabled
73 state.iconColor: control.MD.Style.onSurfaceColor
74 state.iconOpacity: control.checked
75 ? MD.Tokens.radioButton.selectedDisabledIconOpacity
76 : MD.Tokens.radioButton.unselectedDisabledIconOpacity
77 state.contentOpacity: MD.Tokens.radioButton.unselectedDisabledIconOpacity
82 when: control.hovered && control.enabled && !control.down
85 state.iconColor: control.checked ? control.MD.Style.primaryColor
86 : control.MD.Style.onSurfaceColor
87 state.stateLayerColor: control.checked ? control.MD.Style.primaryColor
88 : control.MD.Style.onSurfaceColor
89 state.stateLayerOpacity: MD.Tokens.radioButton.hoverStateLayerOpacity
94 when: control.visualFocus && control.enabled && !control.down
97 state.iconColor: control.checked ? control.MD.Style.primaryColor
98 : control.MD.Style.onSurfaceColor
99 state.stateLayerColor: control.checked ? control.MD.Style.primaryColor
100 : control.MD.Style.onSurfaceColor
101 state.stateLayerOpacity: MD.Tokens.radioButton.focusStateLayerOpacity
106 when: control.down && control.enabled
109 state.iconColor: control.checked ? control.MD.Style.primaryColor
110 : control.MD.Style.onSurfaceColor
111 state.stateLayerColor: control.checked ? control.MD.Style.primaryColor
112 : control.MD.Style.onSurfaceColor
113 state.stateLayerOpacity: MD.Tokens.radioButton.pressedStateLayerOpacity
118 indicator: MD.RadioIndicator {
122 ? (control.mirrored ? control.width - width - control.rightPadding
123 : control.leftPadding)
124 : control.leftPadding + (control.availableWidth - width) / 2
125 y: control.topPadding + (control.availableHeight - height) / 2
128 color: state.iconColor
129 opacity: state.iconOpacity
132 objectName:
"radioStateLayer"
133 anchors.centerIn: parent
134 width: MD.
Tokens.radioButton.stateLayerSize
139 pressed: control.pressed
140 stateOpacity: state.stateLayerOpacity
141 color: state.stateLayerColor
145 contentItem: MD.
Label {
146 Accessible.ignored: true
148 leftPadding: control.indicator && !control.mirrored
149 ? control.indicator.width + control.spacing : 0
150 rightPadding: control.indicator && control.mirrored
151 ? control.indicator.width + control.spacing : 0
154 typescale: control.typescale
155 color: state.labelColor
156 opacity: state.contentOpacity
157 elide: Text.ElideRight
158 verticalAlignment: Text.AlignVCenter
Material Design 3 design tokens.
Displays text using a selectable Material 3 type scale.