CheckBox.qml 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // Copyright (C) 2017 The Qt Company Ltd.
  2. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
  3. // Qt-Security score:significant reason:default
  4. import QtQuick
  5. import QtQuick.Templates as T
  6. import QtQuick.Controls.impl
  7. T.CheckBox {
  8. id: control
  9. implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
  10. implicitContentWidth + leftPadding + rightPadding)
  11. implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
  12. implicitContentHeight + topPadding + bottomPadding,
  13. implicitIndicatorHeight + topPadding + bottomPadding)
  14. padding: 6
  15. spacing: 6
  16. // keep in sync with CheckDelegate.qml (shared CheckIndicator.qml was removed for performance reasons)
  17. indicator: Rectangle {
  18. implicitWidth: 28
  19. implicitHeight: 28
  20. x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2
  21. y: control.topPadding + (control.availableHeight - height) / 2
  22. color: control.down ? control.palette.light : control.palette.base
  23. border.width: control.visualFocus ? 2 : 1
  24. border.color: {
  25. if (control.visualFocus)
  26. return control.palette.highlight
  27. else if (Qt.styleHints.accessibility.contrastPreference !== Qt.HighContrast)
  28. return control.palette.mid
  29. else
  30. return Color.blend(control.palette.dark, control.palette.base,
  31. control.enabled ? 0.0 : 0.5)
  32. }
  33. ColorImage {
  34. x: (parent.width - width) / 2
  35. y: (parent.height - height) / 2
  36. defaultColor: "#353637"
  37. color: control.palette.text
  38. source: "qrc:/qt-project.org/imports/QtQuick/Controls/Basic/images/check.png"
  39. visible: control.checkState === Qt.Checked
  40. }
  41. Rectangle {
  42. x: (parent.width - width) / 2
  43. y: (parent.height - height) / 2
  44. width: 16
  45. height: 3
  46. color: control.palette.text
  47. visible: control.checkState === Qt.PartiallyChecked
  48. }
  49. }
  50. contentItem: CheckLabel {
  51. leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0
  52. rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0
  53. text: control.text
  54. font: control.font
  55. color: control.palette.windowText
  56. }
  57. }