Fluid 1.3.0
Material Design for QtQuick and Qml
Loading...
Searching...
No Matches
IconButton.qml
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
2// SPDX-License-Identifier: MPL-2.0
3
4import QtQuick
5import QtQuick.Templates as T
6import QtQuick.Controls.impl as TImpl
7import Fluid as MD
8import "../core/UiMetrics.js" as UiMetrics
9import "../internal/MotionAnimation.js" as MotionAnimation
10
24T.ToolButton {
25 id: control
26
27 component IconData: QtObject {
28 property string name
29 property url source
30 property color color
31 property bool fill: false
32 }
33
35 enum Type {
36 Filled,
37 Tonal,
38 Outlined,
39 Standard
40 }
41
46 enum Shape {
47 Round,
48 Square
49 }
50
52 enum Size {
53 ExtraSmall,
54 Small,
55 Medium,
56 Large,
57 ExtraLarge
58 }
59
61 enum Width {
62 Default,
63 Narrow,
64 Wide
65 }
66
72 property int type: IconButton.Type.Filled
73
79 property int shape: IconButton.Shape.Round
80
87 property int size: IconButton.Size.Small
88
94 property int widthVariant: IconButton.Width.Default
95
96 // Set by ButtonGroup while this button is one of its direct children.
97 property var __buttonGroup: null
98 property real __groupTopLeftRadius: -1
99 property real __groupTopRightRadius: -1
100 property real __groupBottomLeftRadius: -1
101 property real __groupBottomRightRadius: -1
102
109 property IconData checkedIcon: IconData {}
110
112 property bool mirrorIconInRtl: false
113
118 property bool tintSourceIcon: true
119
124 property color contentColor: {
125 switch (type) {
126 case IconButton.Type.Filled:
127 return checked ? MD.Style.onPrimaryColor : MD.Style.onSurfaceVariantColor;
128 case IconButton.Type.Tonal:
129 return checked ? MD.Style.onSecondaryColor : MD.Style.onSecondaryContainerColor;
130 case IconButton.Type.Outlined:
131 return checked ? MD.Style.inverseOnSurfaceColor : MD.Style.onSurfaceVariantColor;
132 case IconButton.Type.Standard:
133 return checked ? MD.Style.primaryColor : MD.Style.onSurfaceVariantColor;
134 }
135 }
136
141 property color containerColor: {
142 switch (type) {
143 case IconButton.Type.Filled:
144 return checked ? MD.Style.primaryColor : MD.Style.surfaceContainerColor;
145 case IconButton.Type.Tonal:
146 return checked ? MD.Style.secondaryColor : MD.Style.secondaryContainerColor;
147 case IconButton.Type.Outlined:
148 return checked ? MD.Style.inverseSurfaceColor : "transparent";
149 case IconButton.Type.Standard:
150 return "transparent";
151 }
152 }
153
155 property color disabledContentColor: MD.Style.onSurfaceColor
156
158 property color disabledContainerColor: MD.Style.onSurfaceColor
159
161 property color outlineColor: MD.Style.outlineVariantColor
162
164 readonly property color effectiveContentColor: state.contentColor
165
167 readonly property real effectiveContentOpacity: state.contentOpacity
168
170 readonly property color effectiveContainerColor: state.containerColor
171
173 readonly property bool usingCheckedIcon: checked && (checkedIcon.name.length > 0 || checkedIcon.source.toString().length > 0)
174
176 readonly property string effectiveIconName: usingCheckedIcon ? checkedIcon.name : icon.name
177
179 readonly property url effectiveIconSource: usingCheckedIcon ? checkedIcon.source : icon.source
180
182 readonly property color effectiveIconColor: {
183 const explicitColor = usingCheckedIcon ? checkedIcon.color : icon.color;
184 return explicitColor.a > 0 ? explicitColor : effectiveContentColor;
185 }
186
188 readonly property bool effectiveIconFill: checked && (usingCheckedIcon ? checkedIcon.fill : true)
189
191 readonly property bool effectiveIconMirrored: mirrorIconInRtl && mirrored
192
193 icon.width: state.iconSize.width
194 icon.height: state.iconSize.height
195
196 implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, implicitContentWidth + leftPadding + rightPadding)
197 implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, implicitContentHeight + topPadding + bottomPadding)
198
199 leftInset: state.inset.width / 2
200 rightInset: state.inset.width / 2
201 topInset: state.inset.height / 2
202 bottomInset: state.inset.height / 2
203
204 padding: 0
205
206 spacing: 0
207
208 hoverEnabled: true
209 focusPolicy: Qt.StrongFocus
210
211 onCheckedChanged: {
212 if (__buttonGroup)
213 __buttonGroup.__childCheckedChanged(control);
214 }
215 onActiveFocusChanged: {
216 if (activeFocus && __buttonGroup)
217 __buttonGroup.__childFocused(control);
218 }
219 onPressedChanged: {
220 if (__buttonGroup)
221 __buttonGroup.__childGeometryChanged();
222 }
223 onImplicitWidthChanged: {
224 if (__buttonGroup)
225 __buttonGroup.__childGeometryChanged();
226 }
227 onVisibleChanged: {
228 if (__buttonGroup)
229 __buttonGroup.__childrenChanged();
230 }
231 onEnabledChanged: {
232 if (__buttonGroup)
233 __buttonGroup.__childrenChanged();
234 }
235 Keys.onPressed: event => {
236 if (__buttonGroup && __buttonGroup.__handleKey(control, event))
237 event.accepted = true;
238 }
239
240 Behavior on width {
241 enabled: control.__buttonGroup && control.__buttonGroup.__geometryInitialized
242 && control.__buttonGroup.variant === control.__buttonGroup.__standardVariant
243 NumberAnimation {
244 easing.type: Easing.BezierSpline
245 easing.bezierCurve: MotionAnimation.expressiveFastSpatialCurve
246 duration: MotionAnimation.expressiveFastSpatialDuration
247 }
248 }
249 Behavior on x {
250 enabled: control.__buttonGroup && control.__buttonGroup.__geometryInitialized
251 && control.__buttonGroup.variant === control.__buttonGroup.__standardVariant
252 NumberAnimation {
253 easing.type: Easing.BezierSpline
254 easing.bezierCurve: MotionAnimation.expressiveFastSpatialCurve
255 duration: MotionAnimation.expressiveFastSpatialDuration
256 }
257 }
258
259 Accessible.role: __buttonGroup && __buttonGroup.selectionMode === __buttonGroup.__singleSelectionMode
260 ? Accessible.RadioButton
261 : (__buttonGroup && __buttonGroup.selectionMode === __buttonGroup.__multiSelectionMode
262 ? Accessible.CheckBox : Accessible.Button)
263 Accessible.checkable: checkable
264 Accessible.checked: checked
265
266 QtObject {
267 id: state
268
269 readonly property real currentContainerHeight: {
270 switch (control.size) {
271 case IconButton.Size.ExtraSmall: return MD.Tokens.iconButton.containerHeightExtraSmall;
272 case IconButton.Size.Small: return MD.Tokens.iconButton.containerHeightSmall;
273 case IconButton.Size.Medium: return MD.Tokens.iconButton.containerHeightMedium;
274 case IconButton.Size.Large: return MD.Tokens.iconButton.containerHeightLarge;
275 case IconButton.Size.ExtraLarge: return MD.Tokens.iconButton.containerHeightExtraLarge;
276 }
277 }
278 readonly property real currentIconSize: {
279 switch (control.size) {
280 case IconButton.Size.ExtraSmall: return MD.Tokens.iconButton.iconSizeExtraSmall;
281 case IconButton.Size.Small: return MD.Tokens.iconButton.iconSizeSmall;
282 case IconButton.Size.Medium: return MD.Tokens.iconButton.iconSizeMedium;
283 case IconButton.Size.Large: return MD.Tokens.iconButton.iconSizeLarge;
284 case IconButton.Size.ExtraLarge: return MD.Tokens.iconButton.iconSizeExtraLarge;
285 }
286 }
287 readonly property real currentLeadingSpace: {
288 if (control.widthVariant === IconButton.Width.Narrow) {
289 switch (control.size) {
290 case IconButton.Size.ExtraSmall: return MD.Tokens.iconButton.narrowLeadingSpaceExtraSmall;
291 case IconButton.Size.Small: return MD.Tokens.iconButton.narrowLeadingSpaceSmall;
292 case IconButton.Size.Medium: return MD.Tokens.iconButton.narrowLeadingSpaceMedium;
293 case IconButton.Size.Large: return MD.Tokens.iconButton.narrowLeadingSpaceLarge;
294 case IconButton.Size.ExtraLarge: return MD.Tokens.iconButton.narrowLeadingSpaceExtraLarge;
295 }
296 }
297 if (control.widthVariant === IconButton.Width.Wide) {
298 switch (control.size) {
299 case IconButton.Size.ExtraSmall: return MD.Tokens.iconButton.wideLeadingSpaceExtraSmall;
300 case IconButton.Size.Small: return MD.Tokens.iconButton.wideLeadingSpaceSmall;
301 case IconButton.Size.Medium: return MD.Tokens.iconButton.wideLeadingSpaceMedium;
302 case IconButton.Size.Large: return MD.Tokens.iconButton.wideLeadingSpaceLarge;
303 case IconButton.Size.ExtraLarge: return MD.Tokens.iconButton.wideLeadingSpaceExtraLarge;
304 }
305 }
306 switch (control.size) {
307 case IconButton.Size.ExtraSmall: return MD.Tokens.iconButton.defaultLeadingSpaceExtraSmall;
308 case IconButton.Size.Small: return MD.Tokens.iconButton.defaultLeadingSpaceSmall;
309 case IconButton.Size.Medium: return MD.Tokens.iconButton.defaultLeadingSpaceMedium;
310 case IconButton.Size.Large: return MD.Tokens.iconButton.defaultLeadingSpaceLarge;
311 case IconButton.Size.ExtraLarge: return MD.Tokens.iconButton.defaultLeadingSpaceExtraLarge;
312 }
313 }
314 readonly property real currentTrailingSpace: {
315 if (control.widthVariant === IconButton.Width.Narrow) {
316 switch (control.size) {
317 case IconButton.Size.ExtraSmall: return MD.Tokens.iconButton.narrowTrailingSpaceExtraSmall;
318 case IconButton.Size.Small: return MD.Tokens.iconButton.narrowTrailingSpaceSmall;
319 case IconButton.Size.Medium: return MD.Tokens.iconButton.narrowTrailingSpaceMedium;
320 case IconButton.Size.Large: return MD.Tokens.iconButton.narrowTrailingSpaceLarge;
321 case IconButton.Size.ExtraLarge: return MD.Tokens.iconButton.narrowTrailingSpaceExtraLarge;
322 }
323 }
324 if (control.widthVariant === IconButton.Width.Wide) {
325 switch (control.size) {
326 case IconButton.Size.ExtraSmall: return MD.Tokens.iconButton.wideTrailingSpaceExtraSmall;
327 case IconButton.Size.Small: return MD.Tokens.iconButton.wideTrailingSpaceSmall;
328 case IconButton.Size.Medium: return MD.Tokens.iconButton.wideTrailingSpaceMedium;
329 case IconButton.Size.Large: return MD.Tokens.iconButton.wideTrailingSpaceLarge;
330 case IconButton.Size.ExtraLarge: return MD.Tokens.iconButton.wideTrailingSpaceExtraLarge;
331 }
332 }
333 switch (control.size) {
334 case IconButton.Size.ExtraSmall: return MD.Tokens.iconButton.defaultTrailingSpaceExtraSmall;
335 case IconButton.Size.Small: return MD.Tokens.iconButton.defaultTrailingSpaceSmall;
336 case IconButton.Size.Medium: return MD.Tokens.iconButton.defaultTrailingSpaceMedium;
337 case IconButton.Size.Large: return MD.Tokens.iconButton.defaultTrailingSpaceLarge;
338 case IconButton.Size.ExtraLarge: return MD.Tokens.iconButton.defaultTrailingSpaceExtraLarge;
339 }
340 }
341 readonly property real outlineWidth: {
342 switch (control.size) {
343 case IconButton.Size.ExtraSmall: return MD.Tokens.iconButton.outlinedOutlineWidthExtraSmall;
344 case IconButton.Size.Small: return MD.Tokens.iconButton.outlinedOutlineWidthSmall;
345 case IconButton.Size.Medium: return MD.Tokens.iconButton.outlinedOutlineWidthMedium;
346 case IconButton.Size.Large: return MD.Tokens.iconButton.outlinedOutlineWidthLarge;
347 case IconButton.Size.ExtraLarge: return MD.Tokens.iconButton.outlinedOutlineWidthExtraLarge;
348 }
349 }
350 property size buttonSize: Qt.size(currentIconSize + currentLeadingSpace + currentTrailingSpace, currentContainerHeight)
351 property size iconSize: Qt.size(currentIconSize, currentIconSize)
352
353 property size inset: {
354 const minimum = MD.Tokens.iconButton.minimumInteractiveSize;
355 return Qt.size(Math.max(minimum, state.buttonSize.width) - state.buttonSize.width,
356 Math.max(minimum, state.buttonSize.height) - state.buttonSize.height);
357 }
358
359 property MD.shapeValue containerShape: {
360 const tokens = MD.Tokens.iconButton;
361 if (control.pressed) {
362 switch (control.size) {
363 case IconButton.Size.ExtraSmall: return tokens.pressedContainerShapeExtraSmall;
364 case IconButton.Size.Small: return tokens.pressedContainerShapeSmall;
365 case IconButton.Size.Medium: return tokens.pressedContainerShapeMedium;
366 case IconButton.Size.Large: return tokens.pressedContainerShapeLarge;
367 case IconButton.Size.ExtraLarge: return tokens.pressedContainerShapeExtraLarge;
368 }
369 }
370 if (control.checked) {
371 if (control.shape === IconButton.Shape.Square)
372 return tokens.selectedContainerShapeSquare;
373 switch (control.size) {
374 case IconButton.Size.ExtraSmall: return tokens.selectedContainerShapeRoundExtraSmall;
375 case IconButton.Size.Small: return tokens.selectedContainerShapeRoundSmall;
376 case IconButton.Size.Medium: return tokens.selectedContainerShapeRoundMedium;
377 case IconButton.Size.Large: return tokens.selectedContainerShapeRoundLarge;
378 case IconButton.Size.ExtraLarge: return tokens.selectedContainerShapeRoundExtraLarge;
379 }
380 }
381 if (control.shape === IconButton.Shape.Round)
382 return tokens.containerShapeRound;
383 switch (control.size) {
384 case IconButton.Size.ExtraSmall: return tokens.containerShapeSquareExtraSmall;
385 case IconButton.Size.Small: return tokens.containerShapeSquareSmall;
386 case IconButton.Size.Medium: return tokens.containerShapeSquareMedium;
387 case IconButton.Size.Large: return tokens.containerShapeSquareLarge;
388 case IconButton.Size.ExtraLarge: return tokens.containerShapeSquareExtraLarge;
389 }
390 }
391
392 property color containerColor: control.containerColor
393 property color contentColor: control.contentColor
394 property color stateLayerColor: "transparent"
395
396 property real contentOpacity: 1.0
397 property real containerOpacity: 1.0
398 property real stateLayerOpacity: 0.0
399 }
400
401 states: [
402 State {
403 name: "disabled"
404 when: !control.enabled
405
406 PropertyChanges {
407 state.containerColor: control.type === IconButton.Type.Standard ? "transparent" : control.disabledContainerColor
408 state.contentColor: control.disabledContentColor
409 state.containerOpacity: MD.Tokens.iconButton.disabledContainerOpacity
410 state.contentOpacity: MD.Tokens.iconButton.disabledIconOpacity
411 }
412 },
413 State {
414 name: "pressed"
415 when: control.down && control.enabled
416
417 PropertyChanges {
418 state.stateLayerColor: control.effectiveIconColor
419 state.stateLayerOpacity: MD.Tokens.iconButton.pressedStateLayerOpacity
420 }
421 },
422 State {
423 name: "focused"
424 when: control.visualFocus && control.enabled
425
426 PropertyChanges {
427 state.stateLayerColor: control.effectiveIconColor
428 state.stateLayerOpacity: MD.Tokens.iconButton.focusStateLayerOpacity
429 }
430 },
431 State {
432 name: "hovered"
433 when: control.hovered && control.enabled
434
435 PropertyChanges {
436 state.stateLayerColor: control.effectiveIconColor
437 state.stateLayerOpacity: MD.Tokens.iconButton.hoverStateLayerOpacity
438 }
439 }
440 ]
441
442 contentItem: Item {
443 id: iconContent
444
445 implicitWidth: control.icon.width
446 implicitHeight: control.icon.height
447
448 transform: Scale {
449 origin.x: iconContent.width / 2
450 origin.y: iconContent.height / 2
451 xScale: control.effectiveIconMirrored ? -1 : 1
452 }
453
454 TImpl.IconImage {
455 id: sourceIcon
456
457 objectName: "iconButtonSourceImage"
458 anchors.centerIn: parent
459 width: control.icon.width
460 height: control.icon.height
461 source: control.effectiveIconSource
462 sourceSize: Qt.size(control.icon.width, control.icon.height)
463 fillMode: Image.PreserveAspectFit
464 color: control.tintSourceIcon ? control.effectiveIconColor : "transparent"
465 opacity: state.contentOpacity
466 visible: control.effectiveIconSource.toString().length > 0
467 }
468
469 MD.Symbol {
470 objectName: "iconButtonSymbol"
471 anchors.centerIn: parent
472 name: control.effectiveIconName
473 iconWidth: control.icon.width
474 iconHeight: control.icon.height
475 color: control.effectiveIconColor
476 opacity: state.contentOpacity
477 fill: control.effectiveIconFill
478 visible: control.effectiveIconSource.toString().length === 0 && name.length > 0
479 }
480 }
481
482 background: Rectangle {
483 implicitWidth: state.buttonSize.width
484 implicitHeight: state.buttonSize.height
485
486 topLeftRadius: control.__groupTopLeftRadius >= 0 ? control.__groupTopLeftRadius : UiMetrics.resolveShapeRadius(state.containerShape.topLeft, width, height)
487 topRightRadius: control.__groupTopRightRadius >= 0 ? control.__groupTopRightRadius : UiMetrics.resolveShapeRadius(state.containerShape.topRight, width, height)
488 bottomLeftRadius: control.__groupBottomLeftRadius >= 0 ? control.__groupBottomLeftRadius : UiMetrics.resolveShapeRadius(state.containerShape.bottomLeft, width, height)
489 bottomRightRadius: control.__groupBottomRightRadius >= 0 ? control.__groupBottomRightRadius : UiMetrics.resolveShapeRadius(state.containerShape.bottomRight, width, height)
490
491 Behavior on topLeftRadius {
492 enabled: !control.__buttonGroup || control.__buttonGroup.__geometryInitialized
493 NumberAnimation {
494 easing.type: Easing.BezierSpline
495 easing.bezierCurve: MotionAnimation.expressiveFastSpatialCurve
496 duration: MotionAnimation.expressiveFastSpatialDuration
497 }
498 }
499 Behavior on topRightRadius {
500 enabled: !control.__buttonGroup || control.__buttonGroup.__geometryInitialized
501 NumberAnimation {
502 easing.type: Easing.BezierSpline
503 easing.bezierCurve: MotionAnimation.expressiveFastSpatialCurve
504 duration: MotionAnimation.expressiveFastSpatialDuration
505 }
506 }
507 Behavior on bottomLeftRadius {
508 enabled: !control.__buttonGroup || control.__buttonGroup.__geometryInitialized
509 NumberAnimation {
510 easing.type: Easing.BezierSpline
511 easing.bezierCurve: MotionAnimation.expressiveFastSpatialCurve
512 duration: MotionAnimation.expressiveFastSpatialDuration
513 }
514 }
515 Behavior on bottomRightRadius {
516 enabled: !control.__buttonGroup || control.__buttonGroup.__geometryInitialized
517 NumberAnimation {
518 easing.type: Easing.BezierSpline
519 easing.bezierCurve: MotionAnimation.expressiveFastSpatialCurve
520 duration: MotionAnimation.expressiveFastSpatialDuration
521 }
522 }
523
524 border.width: control.type === IconButton.Type.Outlined && !control.checked ? state.outlineWidth : 0
525 border.color: control.outlineColor
526
527 opacity: state.containerOpacity
528 color: state.containerColor
529
530 MD.Ripple {
531 anchors.fill: parent
532
533 topLeftRadius: parent.topLeftRadius
534 topRightRadius: parent.topRightRadius
535 bottomLeftRadius: parent.bottomLeftRadius
536 bottomRightRadius: parent.bottomRightRadius
537
538 pressed: control.pressed
539 pressX: control.pressX
540 pressY: control.pressY
541
542 stateOpacity: state.stateLayerOpacity
543 color: state.stateLayerColor
544 }
545 }
546}
Material Design 3 Expressive icon button tokens.
Definition iconbutton.h:21
qreal wideLeadingSpaceExtraSmall
Definition iconbutton.h:48
qreal wideTrailingSpaceMedium
Definition iconbutton.h:69
qreal narrowLeadingSpaceSmall
Definition iconbutton.h:44
Fluid::ShapeValue containerShapeSquareMedium
Definition iconbutton.h:84
Fluid::ShapeValue selectedContainerShapeRoundMedium
Definition iconbutton.h:101
qreal narrowLeadingSpaceLarge
Definition iconbutton.h:46
qreal wideLeadingSpaceExtraLarge
Definition iconbutton.h:52
qreal defaultTrailingSpaceExtraSmall
Definition iconbutton.h:54
Fluid::ShapeValue containerShapeSquareSmall
Definition iconbutton.h:83
qreal containerHeightExtraSmall
Definition iconbutton.h:26
qreal defaultTrailingSpaceMedium
Definition iconbutton.h:56
qreal outlinedOutlineWidthExtraLarge
Definition iconbutton.h:78
Fluid::ShapeValue pressedContainerShapeMedium
Definition iconbutton.h:92
qreal wideLeadingSpaceLarge
Definition iconbutton.h:51
qreal narrowLeadingSpaceExtraLarge
Definition iconbutton.h:47
Fluid::ShapeValue selectedContainerShapeRoundExtraLarge READ selectedContainerShapeRoundExtraLarge
Definition iconbutton.h:105
qreal outlinedOutlineWidthExtraSmall
Definition iconbutton.h:73
qreal wideLeadingSpaceMedium
Definition iconbutton.h:50
qreal disabledContainerOpacity
Definition iconbutton.h:107
qreal containerHeightExtraLarge
Definition iconbutton.h:30
qreal defaultTrailingSpaceLarge
Definition iconbutton.h:57
qreal outlinedOutlineWidthMedium
Definition iconbutton.h:75
Fluid::ShapeValue containerShapeSquareExtraSmall
Definition iconbutton.h:82
Fluid::ShapeValue pressedContainerShapeExtraSmall
Definition iconbutton.h:90
qreal wideTrailingSpaceSmall
Definition iconbutton.h:68
Fluid::ShapeValue containerShapeSquareExtraLarge
Definition iconbutton.h:88
Fluid::ShapeValue selectedContainerShapeRoundExtraSmall READ selectedContainerShapeRoundExtraSmall
Definition iconbutton.h:97
Fluid::ShapeValue pressedContainerShapeExtraLarge
Definition iconbutton.h:95
qreal narrowLeadingSpaceMedium
Definition iconbutton.h:45
qreal outlinedOutlineWidthLarge
Definition iconbutton.h:76
qreal narrowTrailingSpaceSmall
Definition iconbutton.h:62
qreal containerHeightLarge
Definition iconbutton.h:29
qreal outlinedOutlineWidthSmall
Definition iconbutton.h:74
Fluid::ShapeValue selectedContainerShapeRoundSmall
Definition iconbutton.h:99
Fluid::ShapeValue pressedContainerShapeLarge
Definition iconbutton.h:93
qreal defaultLeadingSpaceSmall
Definition iconbutton.h:38
qreal defaultLeadingSpaceExtraLarge
Definition iconbutton.h:42
qreal wideTrailingSpaceExtraLarge
Definition iconbutton.h:71
qreal iconSizeExtraSmall
Definition iconbutton.h:31
Fluid::ShapeValue selectedContainerShapeRoundLarge
Definition iconbutton.h:103
Fluid::ShapeValue pressedContainerShapeSmall
Definition iconbutton.h:91
qreal defaultLeadingSpaceLarge
Definition iconbutton.h:40
qreal defaultTrailingSpaceExtraLarge
Definition iconbutton.h:59
Fluid::ShapeValue containerShapeSquareLarge
Definition iconbutton.h:85
qreal iconSizeExtraLarge
Definition iconbutton.h:35
qreal defaultLeadingSpaceExtraSmall
Definition iconbutton.h:37
qreal narrowTrailingSpaceExtraSmall
Definition iconbutton.h:61
qreal narrowLeadingSpaceExtraSmall
Definition iconbutton.h:43
qreal wideTrailingSpaceExtraSmall
Definition iconbutton.h:67
qreal containerHeightMedium
Definition iconbutton.h:28
qreal narrowTrailingSpaceExtraLarge
Definition iconbutton.h:66
qreal defaultTrailingSpaceSmall
Definition iconbutton.h:55
qreal wideTrailingSpaceLarge
Definition iconbutton.h:70
qreal defaultLeadingSpaceMedium
Definition iconbutton.h:39
qreal wideLeadingSpaceSmall
Definition iconbutton.h:49
qreal narrowTrailingSpaceMedium
Definition iconbutton.h:63
qreal containerHeightSmall
Definition iconbutton.h:27
qreal narrowTrailingSpaceLarge
Definition iconbutton.h:64