aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMohammadHossein Qanbari <mohammad.qanbari@qt.io>2025-05-07 17:39:00 +0200
committerMohammadHossein Qanbari <mohammad.qanbari@qt.io>2025-06-17 10:51:04 +0200
commit0ebecfd29ba3ca5377656b4d6db622ea672e5c46 (patch)
treecf8d740fe45143cd8e275488c11524f6f9a0dc1d /src
parent2692b14cfb702ec4b50f05f743babba5973547e4 (diff)
Basic style: Improve accessibility with high-contrast colors
This patch enhances accessibility by introducing high-contrast visual cues across various controls when high-contrast mode is preferred. Previously, controls in the Basic style did not provide sufficient visual distinction in high-contrast mode. This patch adds a visible contour (border) around controls when high-contrast mode is enabled. For some controls, the contour is added by adjusting the border color and width. For others (e.g., highlighted ComboBox items), a Rectangle is drawn around the control. TextArea and Tumbler controls are also updated accordingly. Separator controls now increase their width or height based on orientation in high-contrast mode for better visibility. ScrollBar and ScrollIndicator controls: - Previously, these controls relied solely on handle color changes, which were insufficient in high-contrast mode. - This patch introduces an optional background and increases the handle's contrast to improve visibility. The patch also ensures that text and border colors adapt to the high-contrast palette, improving legibility and focus indication throughout the controls. Minor adjustments to Menu, Delegate, and Header controls for consistent high-contrast appearance. Task-number: QTBUG-135687 Pick-to: 6.10 Change-Id: I460bd6fa2e48a47f20c2ba053ab453f32de18add Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/quickcontrols/basic/Button.qml5
-rw-r--r--src/quickcontrols/basic/CheckBox.qml10
-rw-r--r--src/quickcontrols/basic/CheckDelegate.qml10
-rw-r--r--src/quickcontrols/basic/ComboBox.qml22
-rw-r--r--src/quickcontrols/basic/DayOfWeekRow.qml1
-rw-r--r--src/quickcontrols/basic/DelayButton.qml5
-rw-r--r--src/quickcontrols/basic/Frame.qml4
-rw-r--r--src/quickcontrols/basic/GroupBox.qml4
-rw-r--r--src/quickcontrols/basic/HorizontalHeaderViewDelegate.qml7
-rw-r--r--src/quickcontrols/basic/ItemDelegate.qml2
-rw-r--r--src/quickcontrols/basic/MenuBarItem.qml3
-rw-r--r--src/quickcontrols/basic/MenuItem.qml2
-rw-r--r--src/quickcontrols/basic/MenuSeparator.qml2
-rw-r--r--src/quickcontrols/basic/MonthGrid.qml1
-rw-r--r--src/quickcontrols/basic/RadioButton.qml10
-rw-r--r--src/quickcontrols/basic/RadioDelegate.qml10
-rw-r--r--src/quickcontrols/basic/RangeSlider.qml15
-rw-r--r--src/quickcontrols/basic/RoundButton.qml13
-rw-r--r--src/quickcontrols/basic/ScrollBar.qml14
-rw-r--r--src/quickcontrols/basic/ScrollIndicator.qml9
-rw-r--r--src/quickcontrols/basic/Slider.qml11
-rw-r--r--src/quickcontrols/basic/SpinBox.qml10
-rw-r--r--src/quickcontrols/basic/SplitView.qml2
-rw-r--r--src/quickcontrols/basic/SwipeDelegate.qml6
-rw-r--r--src/quickcontrols/basic/Switch.qml12
-rw-r--r--src/quickcontrols/basic/SwitchDelegate.qml12
-rw-r--r--src/quickcontrols/basic/TabButton.qml2
-rw-r--r--src/quickcontrols/basic/TableViewDelegate.qml4
-rw-r--r--src/quickcontrols/basic/TextArea.qml8
-rw-r--r--src/quickcontrols/basic/TextField.qml10
-rw-r--r--src/quickcontrols/basic/ToolButton.qml14
-rw-r--r--src/quickcontrols/basic/ToolSeparator.qml4
-rw-r--r--src/quickcontrols/basic/TreeViewDelegate.qml3
-rw-r--r--src/quickcontrols/basic/Tumbler.qml6
-rw-r--r--src/quickcontrols/basic/VerticalHeaderViewDelegate.qml7
35 files changed, 224 insertions, 36 deletions
diff --git a/src/quickcontrols/basic/Button.qml b/src/quickcontrols/basic/Button.qml
index cc02c2d7cd..e4f34613e3 100644
--- a/src/quickcontrols/basic/Button.qml
+++ b/src/quickcontrols/basic/Button.qml
@@ -40,7 +40,8 @@ T.Button {
visible: !control.flat || control.down || control.checked || control.highlighted
color: Color.blend(control.checked || control.highlighted ? control.palette.dark : control.palette.button,
control.palette.mid, control.down ? 0.5 : 0.0)
- border.color: control.palette.highlight
- border.width: control.visualFocus ? 2 : 0
+ border.color: control.visualFocus ? control.palette.highlight : control.palette.windowText
+ border.width: control.visualFocus ? 2 :
+ Qt.styleHints.accessibility.contrastPreference == Qt.HighContrast ? 1 : 0
}
}
diff --git a/src/quickcontrols/basic/CheckBox.qml b/src/quickcontrols/basic/CheckBox.qml
index 3d71008b50..9d34d47a3c 100644
--- a/src/quickcontrols/basic/CheckBox.qml
+++ b/src/quickcontrols/basic/CheckBox.qml
@@ -27,7 +27,15 @@ T.CheckBox {
color: control.down ? control.palette.light : control.palette.base
border.width: control.visualFocus ? 2 : 1
- border.color: control.visualFocus ? control.palette.highlight : control.palette.mid
+ border.color: {
+ if (control.visualFocus)
+ return control.palette.highlight
+ else if (Qt.styleHints.accessibility.contrastPreference !== Qt.HighContrast)
+ return control.palette.mid
+ else
+ return Color.blend(control.palette.dark, control.palette.base,
+ control.enabled ? 0.0 : 0.5)
+ }
ColorImage {
x: (parent.width - width) / 2
diff --git a/src/quickcontrols/basic/CheckDelegate.qml b/src/quickcontrols/basic/CheckDelegate.qml
index 59e1543265..0ce2510f08 100644
--- a/src/quickcontrols/basic/CheckDelegate.qml
+++ b/src/quickcontrols/basic/CheckDelegate.qml
@@ -46,7 +46,15 @@ T.CheckDelegate {
color: control.down ? control.palette.light : control.palette.base
border.width: control.visualFocus ? 2 : 1
- border.color: control.visualFocus ? control.palette.highlight : control.palette.mid
+ border.color: {
+ if (control.visualFocus)
+ return control.palette.highlight
+ else if (Qt.styleHints.accessibility.contrastPreference !== Qt.HighContrast)
+ return control.palette.mid
+ else
+ return Color.blend(control.palette.dark, control.palette.base,
+ control.enabled ? 0.0 : 0.5)
+ }
ColorImage {
x: (parent.width - width) / 2
diff --git a/src/quickcontrols/basic/ComboBox.qml b/src/quickcontrols/basic/ComboBox.qml
index 91774afc42..f0eb5602e9 100644
--- a/src/quickcontrols/basic/ComboBox.qml
+++ b/src/quickcontrols/basic/ComboBox.qml
@@ -64,7 +64,9 @@ T.ComboBox {
background: Rectangle {
visible: control.enabled && control.editable && !control.flat
border.width: parent && parent.activeFocus ? 2 : 1
- border.color: parent && parent.activeFocus ? control.palette.highlight : control.palette.button
+ border.color: parent && parent.activeFocus ? control.palette.highlight :
+ Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ?
+ control.palette.buttonText : control.palette.button
color: control.palette.base
}
}
@@ -74,8 +76,9 @@ T.ComboBox {
implicitHeight: 40
color: control.down ? control.palette.mid : control.palette.button
- border.color: control.palette.highlight
- border.width: !control.editable && control.visualFocus ? 2 : 0
+ border.color: !control.editable && control.visualFocus ? control.palette.highlight : control.palette.buttonText
+ border.width: (!control.editable && control.visualFocus) ? 2 :
+ Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 1 : 0
visible: !control.flat || control.down
}
@@ -102,6 +105,19 @@ T.ComboBox {
border.color: control.palette.mid
}
+ // Show a contour around the highlighted item in high contrast mode
+ Rectangle {
+ property Item highlightedItem: parent ? parent.itemAtIndex(control.highlightedIndex) : null
+ visible: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast && highlightedItem
+ z: 11
+ x: highlightedItem ? highlightedItem.x : 0
+ y: highlightedItem ? highlightedItem.y : 0
+ width: highlightedItem ? highlightedItem.width : 0
+ height: highlightedItem ? highlightedItem.height : 0
+ color: "transparent"
+ border.color: control.palette.dark
+ }
+
T.ScrollIndicator.vertical: ScrollIndicator { }
}
diff --git a/src/quickcontrols/basic/DayOfWeekRow.qml b/src/quickcontrols/basic/DayOfWeekRow.qml
index 0de64264ba..ced2290940 100644
--- a/src/quickcontrols/basic/DayOfWeekRow.qml
+++ b/src/quickcontrols/basic/DayOfWeekRow.qml
@@ -21,6 +21,7 @@ T.AbstractDayOfWeekRow {
delegate: Text {
text: shortName
font: control.font
+ color: control.palette.text
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
diff --git a/src/quickcontrols/basic/DelayButton.qml b/src/quickcontrols/basic/DelayButton.qml
index 1be4450c69..9273ba958e 100644
--- a/src/quickcontrols/basic/DelayButton.qml
+++ b/src/quickcontrols/basic/DelayButton.qml
@@ -58,8 +58,9 @@ T.DelayButton {
implicitWidth: 100
implicitHeight: 40
color: Color.blend(control.palette.button, control.palette.mid, control.down ? 0.5 : 0.0)
- border.color: control.palette.highlight
- border.width: control.visualFocus ? 2 : 0
+ border.color: control.visualFocus ? control.palette.highlight : control.palette.windowText
+ border.width: control.visualFocus ? 2 :
+ Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 1 : 0
PaddedRectangle {
padding: control.visualFocus ? 2 : 0
diff --git a/src/quickcontrols/basic/Frame.qml b/src/quickcontrols/basic/Frame.qml
index b299a5afee..4139ff6d95 100644
--- a/src/quickcontrols/basic/Frame.qml
+++ b/src/quickcontrols/basic/Frame.qml
@@ -17,6 +17,8 @@ T.Frame {
background: Rectangle {
color: "transparent"
- border.color: control.palette.mid
+ border.color: Qt.styleHints.accessibility.contrastPreference !== Qt.HighContrast ?
+ control.palette.mid : Color.blend(control.palette.dark, control.palette.base,
+ enabled ? 0.0 : 0.5)
}
}
diff --git a/src/quickcontrols/basic/GroupBox.qml b/src/quickcontrols/basic/GroupBox.qml
index 03afd873ca..39bbefce9a 100644
--- a/src/quickcontrols/basic/GroupBox.qml
+++ b/src/quickcontrols/basic/GroupBox.qml
@@ -35,6 +35,8 @@ T.GroupBox {
height: parent.height - control.topPadding + control.bottomPadding
color: "transparent"
- border.color: control.palette.mid
+ border.color: Qt.styleHints.accessibility.contrastPreference !== Qt.HighContrast ?
+ control.palette.mid : Color.blend(control.palette.dark, control.palette.base,
+ enabled ? 0.0 : 0.5)
}
}
diff --git a/src/quickcontrols/basic/HorizontalHeaderViewDelegate.qml b/src/quickcontrols/basic/HorizontalHeaderViewDelegate.qml
index 18d75752d9..7f9a0a7fcf 100644
--- a/src/quickcontrols/basic/HorizontalHeaderViewDelegate.qml
+++ b/src/quickcontrols/basic/HorizontalHeaderViewDelegate.qml
@@ -18,14 +18,15 @@ T.HeaderViewDelegate {
highlighted: selected
background: Rectangle {
- border.color: "#e4e4e4"
- color: "#f6f6f6"
+ border.color: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ?
+ control.palette.windowText : control.palette.midlight
+ color: control.palette.light
}
contentItem: Label {
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
- color: "#ff26282a"
+ color: control.palette.windowText
text: control.model[control.headerView.textRole]
}
}
diff --git a/src/quickcontrols/basic/ItemDelegate.qml b/src/quickcontrols/basic/ItemDelegate.qml
index 7bef49d6d6..384fc70c0e 100644
--- a/src/quickcontrols/basic/ItemDelegate.qml
+++ b/src/quickcontrols/basic/ItemDelegate.qml
@@ -39,5 +39,7 @@ T.ItemDelegate {
visible: control.down || control.highlighted || control.visualFocus
color: Color.blend(control.down ? control.palette.midlight : control.palette.light,
control.palette.highlight, control.visualFocus ? 0.15 : 0.0)
+ border.width: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 1 : 0
+ border.color: control.highlighted ? control.palette.highlight : control.palette.text
}
}
diff --git a/src/quickcontrols/basic/MenuBarItem.qml b/src/quickcontrols/basic/MenuBarItem.qml
index 9362d26c15..2bdae45f9f 100644
--- a/src/quickcontrols/basic/MenuBarItem.qml
+++ b/src/quickcontrols/basic/MenuBarItem.qml
@@ -39,5 +39,8 @@ T.MenuBarItem {
implicitWidth: 40
implicitHeight: 40
color: control.down || control.highlighted ? control.palette.mid : "transparent"
+ border.color: control.palette.dark
+ border.width: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast &&
+ control.highlighted ? 1 : 0
}
}
diff --git a/src/quickcontrols/basic/MenuItem.qml b/src/quickcontrols/basic/MenuItem.qml
index ad50eacad9..9dd3c451ba 100644
--- a/src/quickcontrols/basic/MenuItem.qml
+++ b/src/quickcontrols/basic/MenuItem.qml
@@ -67,5 +67,7 @@ T.MenuItem {
width: control.width - 2
height: control.height - 2
color: control.down ? control.palette.midlight : control.highlighted ? control.palette.light : "transparent"
+ border.color: control.palette.dark
+ border.width: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast && control.highlighted ? 1 : 0
}
}
diff --git a/src/quickcontrols/basic/MenuSeparator.qml b/src/quickcontrols/basic/MenuSeparator.qml
index ff7e79e784..083081c837 100644
--- a/src/quickcontrols/basic/MenuSeparator.qml
+++ b/src/quickcontrols/basic/MenuSeparator.qml
@@ -18,7 +18,7 @@ T.MenuSeparator {
contentItem: Rectangle {
implicitWidth: 188
- implicitHeight: 1
+ implicitHeight: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 2 : 1
color: control.palette.mid
}
}
diff --git a/src/quickcontrols/basic/MonthGrid.qml b/src/quickcontrols/basic/MonthGrid.qml
index b8d2379bcf..eb45b2839c 100644
--- a/src/quickcontrols/basic/MonthGrid.qml
+++ b/src/quickcontrols/basic/MonthGrid.qml
@@ -21,6 +21,7 @@ T.AbstractMonthGrid {
opacity: model.month === control.month ? 1 : 0
text: model.day
font: control.font
+ color: control.palette.text
required property var model
}
diff --git a/src/quickcontrols/basic/RadioButton.qml b/src/quickcontrols/basic/RadioButton.qml
index 7b3f4063e1..8ae589d3c4 100644
--- a/src/quickcontrols/basic/RadioButton.qml
+++ b/src/quickcontrols/basic/RadioButton.qml
@@ -28,7 +28,15 @@ T.RadioButton {
radius: width / 2
color: control.down ? control.palette.light : control.palette.base
border.width: control.visualFocus ? 2 : 1
- border.color: control.visualFocus ? control.palette.highlight : control.palette.mid
+ border.color: {
+ if (control.visualFocus)
+ return control.palette.highlight
+ else if (Qt.styleHints.accessibility.contrastPreference !== Qt.HighContrast)
+ return control.palette.mid
+ else
+ return Color.blend(control.palette.dark, control.palette.base,
+ control.enabled ? 0.0 : 0.5)
+ }
Rectangle {
x: (parent.width - width) / 2
diff --git a/src/quickcontrols/basic/RadioDelegate.qml b/src/quickcontrols/basic/RadioDelegate.qml
index 87e6e66b29..bcaf4f2b26 100644
--- a/src/quickcontrols/basic/RadioDelegate.qml
+++ b/src/quickcontrols/basic/RadioDelegate.qml
@@ -47,7 +47,15 @@ T.RadioDelegate {
radius: width / 2
color: control.down ? control.palette.light : control.palette.base
border.width: control.visualFocus ? 2 : 1
- border.color: control.visualFocus ? control.palette.highlight : control.palette.mid
+ border.color: {
+ if (control.visualFocus)
+ return control.palette.highlight
+ else if (Qt.styleHints.accessibility.contrastPreference !== Qt.HighContrast)
+ return control.palette.mid
+ else
+ return Color.blend(control.palette.dark, control.palette.base,
+ control.enabled ? 0.0 : 0.5)
+ }
Rectangle {
x: (parent.width - width) / 2
diff --git a/src/quickcontrols/basic/RangeSlider.qml b/src/quickcontrols/basic/RangeSlider.qml
index 155807da8d..c2abb90e05 100644
--- a/src/quickcontrols/basic/RangeSlider.qml
+++ b/src/quickcontrols/basic/RangeSlider.qml
@@ -8,6 +8,15 @@ import QtQuick.Templates as T
T.RangeSlider {
id: control
+ readonly property color handleBorderColor: {
+ if (activeFocus)
+ return palette.highlight
+ else if (Qt.styleHints.accessibility.contrastPreference !== Qt.HighContrast)
+ return enabled ? palette.mid : palette.midlight
+ else
+ return enabled ? palette.windowText : palette.mid
+ }
+
implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
first.implicitHandleWidth + leftPadding + rightPadding,
second.implicitHandleWidth + leftPadding + rightPadding)
@@ -24,7 +33,7 @@ T.RangeSlider {
implicitHeight: 28
radius: width / 2
border.width: activeFocus ? 2 : 1
- border.color: activeFocus ? control.palette.highlight : control.enabled ? control.palette.mid : control.palette.midlight
+ border.color: control.handleBorderColor
color: control.first.pressed ? control.palette.light : control.palette.window
}
@@ -35,7 +44,7 @@ T.RangeSlider {
implicitHeight: 28
radius: width / 2
border.width: activeFocus ? 2 : 1
- border.color: activeFocus ? control.palette.highlight : control.enabled ? control.palette.mid : control.palette.midlight
+ border.color: control.handleBorderColor
color: control.second.pressed ? control.palette.light : control.palette.window
}
@@ -49,6 +58,8 @@ T.RangeSlider {
radius: 3
color: control.palette.midlight
scale: control.horizontal && control.mirrored ? -1 : 1
+ border.width: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 1 : 0
+ border.color: enabled ? control.palette.dark : control.palette.mid
Rectangle {
x: control.horizontal ? control.first.position * parent.width + 3 : 0
diff --git a/src/quickcontrols/basic/RoundButton.qml b/src/quickcontrols/basic/RoundButton.qml
index 7e7bd039b0..8df88e415c 100644
--- a/src/quickcontrols/basic/RoundButton.qml
+++ b/src/quickcontrols/basic/RoundButton.qml
@@ -41,7 +41,16 @@ T.RoundButton {
visible: !control.flat || control.down || control.checked || control.highlighted
color: Color.blend(control.checked || control.highlighted ? control.palette.dark : control.palette.button,
control.palette.mid, control.down ? 0.5 : 0.0)
- border.color: control.palette.highlight
- border.width: control.visualFocus ? 2 : 0
+ border.color: {
+ if (control.visualFocus)
+ return control.palette.highlight
+ else if (Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast)
+ return Color.blend(control.palette.text, control.palette.dark,
+ control.enabled ? 0.0 : 0.3)
+ else
+ return control.palette.windowText
+ }
+ border.width: control.visualFocus ? 2 :
+ (Qt.styleHints.accessibility.contrastPreference == Qt.HighContrast) ? 1 : 0
}
}
diff --git a/src/quickcontrols/basic/ScrollBar.qml b/src/quickcontrols/basic/ScrollBar.qml
index 8927a4f13f..c5c84a2882 100644
--- a/src/quickcontrols/basic/ScrollBar.qml
+++ b/src/quickcontrols/basic/ScrollBar.qml
@@ -22,7 +22,13 @@ T.ScrollBar {
implicitHeight: control.interactive ? 6 : 2
radius: width / 2
- color: control.pressed ? control.palette.dark : control.palette.mid
+ color: {
+ if (Qt.styleHints.accessibility.contrastPreference !== Qt.HighContrast)
+ return pressed ? control.palette.dark : control.palette.mid
+ else
+ return Color.blend(control.palette.text, control.palette.mid, pressed ? 0.0 : 0.3)
+ }
+
opacity: 0.0
states: State {
@@ -39,4 +45,10 @@ T.ScrollBar {
}
}
}
+
+ background: Rectangle {
+ visible: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast
+ opacity: control.contentItem.opacity
+ color: control.palette.mid
+ }
}
diff --git a/src/quickcontrols/basic/ScrollIndicator.qml b/src/quickcontrols/basic/ScrollIndicator.qml
index 8b1ca93c26..7fbd6e51c0 100644
--- a/src/quickcontrols/basic/ScrollIndicator.qml
+++ b/src/quickcontrols/basic/ScrollIndicator.qml
@@ -19,7 +19,8 @@ T.ScrollIndicator {
implicitWidth: 2
implicitHeight: 2
- color: control.palette.mid
+ color: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ?
+ control.palette.text : control.palette.mid
visible: control.size < 1.0
opacity: 0.0
@@ -39,4 +40,10 @@ T.ScrollIndicator {
}
]
}
+
+ background: Rectangle {
+ visible: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast
+ opacity: control.contentItem.opacity
+ color: control.palette.mid
+ }
}
diff --git a/src/quickcontrols/basic/Slider.qml b/src/quickcontrols/basic/Slider.qml
index 7ca8e02bf1..3578537af4 100644
--- a/src/quickcontrols/basic/Slider.qml
+++ b/src/quickcontrols/basic/Slider.qml
@@ -23,7 +23,14 @@ T.Slider {
radius: width / 2
color: control.pressed ? control.palette.light : control.palette.window
border.width: control.visualFocus ? 2 : 1
- border.color: control.visualFocus ? control.palette.highlight : control.enabled ? control.palette.mid : control.palette.midlight
+ border.color: {
+ if (activeFocus)
+ return control.palette.highlight
+ else if (Qt.styleHints.accessibility.contrastPreference !== Qt.HighContrast)
+ return control.enabled ? control.palette.mid : control.palette.midlight
+ else
+ return control.enabled ? control.palette.windowText : control.palette.mid
+ }
}
background: Rectangle {
@@ -36,6 +43,8 @@ T.Slider {
radius: 3
color: control.palette.midlight
scale: control.horizontal && control.mirrored ? -1 : 1
+ border.width: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 1 : 0
+ border.color: enabled ? control.palette.dark : control.palette.mid
Rectangle {
y: control.horizontal ? 0 : control.visualPosition * parent.height
diff --git a/src/quickcontrols/basic/SpinBox.qml b/src/quickcontrols/basic/SpinBox.qml
index cf4315e910..d873b6381d 100644
--- a/src/quickcontrols/basic/SpinBox.qml
+++ b/src/quickcontrols/basic/SpinBox.qml
@@ -57,6 +57,8 @@ T.SpinBox {
implicitWidth: 40
implicitHeight: 40
color: control.up.pressed ? control.palette.mid : control.palette.button
+ border.color: enabled ? control.palette.text : control.palette.mid
+ border.width: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 1 : 0
Rectangle {
x: (parent.width - width) / 2
@@ -80,6 +82,8 @@ T.SpinBox {
implicitWidth: 40
implicitHeight: 40
color: control.down.pressed ? control.palette.mid : control.palette.button
+ border.color: enabled ? control.palette.text : control.palette.mid
+ border.width: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 1 : 0
Rectangle {
x: (parent.width - width) / 2
@@ -93,6 +97,10 @@ T.SpinBox {
background: Rectangle {
implicitWidth: 140
color: enabled ? control.palette.base : control.palette.button
- border.color: control.palette.button
+ border.color: {
+ if (Qt.styleHints.accessibility.contrastPreference !== Qt.HighContrast)
+ return control.palette.button
+ return enabled ? control.palette.text : control.palette.mid
+ }
}
}
diff --git a/src/quickcontrols/basic/SplitView.qml b/src/quickcontrols/basic/SplitView.qml
index 6d673b55b7..3d5a87a941 100644
--- a/src/quickcontrols/basic/SplitView.qml
+++ b/src/quickcontrols/basic/SplitView.qml
@@ -17,5 +17,7 @@ T.SplitView {
implicitHeight: control.orientation === Qt.Horizontal ? control.height : 6
color: T.SplitHandle.pressed ? control.palette.mid
: (T.SplitHandle.hovered ? control.palette.midlight : control.palette.button)
+ border.color: control.palette.dark
+ border.width: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 1 : 0
}
}
diff --git a/src/quickcontrols/basic/SwipeDelegate.qml b/src/quickcontrols/basic/SwipeDelegate.qml
index 552f34dc01..48f3cb8e78 100644
--- a/src/quickcontrols/basic/SwipeDelegate.qml
+++ b/src/quickcontrols/basic/SwipeDelegate.qml
@@ -40,5 +40,11 @@ T.SwipeDelegate {
implicitHeight: 40
color: Color.blend(control.down ? control.palette.midlight : control.palette.light,
control.palette.highlight, control.visualFocus ? 0.15 : 0.0)
+ // The condition of (control.down || control.highlighted || control.visualFocus)
+ // came from the ItemDelegate.qml
+ border.width: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast &&
+ (control.down || control.highlighted || control.visualFocus) ? 1 : 0
+ border.color: control.down || control.highlighted || control.visualFocus ?
+ control.palette.highlightedText : control.palette.text
}
}
diff --git a/src/quickcontrols/basic/Switch.qml b/src/quickcontrols/basic/Switch.qml
index d299ea3748..c57037127b 100644
--- a/src/quickcontrols/basic/Switch.qml
+++ b/src/quickcontrols/basic/Switch.qml
@@ -29,6 +29,8 @@ T.Switch {
rightPadding: 0
padding: (height - 16) / 2
color: control.checked ? control.palette.dark : control.palette.midlight
+ border.width: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 1 : 0
+ border.color: Color.blend(control.palette.dark, control.palette.base, enabled ? 0.0 : 0.5)
Rectangle {
x: Math.max(0, Math.min(parent.width - width, control.visualPosition * parent.width - (width / 2)))
@@ -38,7 +40,15 @@ T.Switch {
radius: 16
color: control.down ? control.palette.light : control.palette.window
border.width: control.visualFocus ? 2 : 1
- border.color: control.visualFocus ? control.palette.highlight : control.enabled ? control.palette.mid : control.palette.midlight
+ border.color: {
+ if (control.visualFocus)
+ return control.palette.highlight;
+ else if (Qt.styleHints.accessibility.contrastPreference !== Qt.HighContrast)
+ return control.enabled ? control.palette.mid : control.palette.midlight
+ else
+ return Color.blend(control.palette.dark, control.palette.base,
+ control.enabled ? 0.0 : 0.5)
+ }
Behavior on x {
enabled: !control.down
diff --git a/src/quickcontrols/basic/SwitchDelegate.qml b/src/quickcontrols/basic/SwitchDelegate.qml
index 98392557ad..10985a99ae 100644
--- a/src/quickcontrols/basic/SwitchDelegate.qml
+++ b/src/quickcontrols/basic/SwitchDelegate.qml
@@ -33,6 +33,8 @@ T.SwitchDelegate {
rightPadding: 0
padding: (height - 16) / 2
color: control.checked ? control.palette.dark : control.palette.midlight
+ border.width: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 1 : 0
+ border.color: Color.blend(control.palette.dark, control.palette.base, enabled ? 0.0 : 0.5)
Rectangle {
x: Math.max(0, Math.min(parent.width - width, control.visualPosition * parent.width - (width / 2)))
@@ -42,7 +44,15 @@ T.SwitchDelegate {
radius: 16
color: control.down ? control.palette.light : control.palette.window
border.width: control.visualFocus ? 2 : 1
- border.color: control.visualFocus ? control.palette.highlight : control.enabled ? control.palette.mid : control.palette.midlight
+ border.color: {
+ if (control.visualFocus)
+ return control.palette.highlight;
+ else if (Qt.styleHints.accessibility.contrastPreference !== Qt.HighContrast)
+ return control.enabled ? control.palette.mid : control.palette.midlight
+ else
+ return Color.blend(control.palette.dark, control.palette.base,
+ control.enabled ? 0.0 : 0.5)
+ }
Behavior on x {
enabled: !control.down
diff --git a/src/quickcontrols/basic/TabButton.qml b/src/quickcontrols/basic/TabButton.qml
index 071048dce5..cffaff9ec3 100644
--- a/src/quickcontrols/basic/TabButton.qml
+++ b/src/quickcontrols/basic/TabButton.qml
@@ -35,5 +35,7 @@ T.TabButton {
implicitHeight: 40
color: Color.blend(control.checked ? control.palette.window : control.palette.dark,
control.palette.mid, control.down ? 0.5 : 0.0)
+ border.width: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 1 : 0
+ border.color: control.palette.windowText
}
}
diff --git a/src/quickcontrols/basic/TableViewDelegate.qml b/src/quickcontrols/basic/TableViewDelegate.qml
index b560340a2d..b24c888f6d 100644
--- a/src/quickcontrols/basic/TableViewDelegate.qml
+++ b/src/quickcontrols/basic/TableViewDelegate.qml
@@ -22,8 +22,8 @@ T.TableViewDelegate {
required property var model
background: Rectangle {
- border.width: control.current ? 2 : 0
- border.color: control.palette.highlight
+ border.width: control.current ? 2 : Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 1 : 0
+ border.color: control.current ? control.palette.highlight : control.palette.windowText
color: control.highlighted
? control.palette.highlight
: (control.tableView.alternatingRows && control.row % 2 !== 0
diff --git a/src/quickcontrols/basic/TextArea.qml b/src/quickcontrols/basic/TextArea.qml
index 9a86c8ae66..62d3e5f3ab 100644
--- a/src/quickcontrols/basic/TextArea.qml
+++ b/src/quickcontrols/basic/TextArea.qml
@@ -28,6 +28,14 @@ T.TextArea {
control: control
}
+ background: Rectangle {
+ visible: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast
+ color: "transparent"
+ border.width: control.activeFocus ? 2 : 1
+ border.color: control.activeFocus ? control.palette.highlight :
+ control.enabled ? control.palette.mid : control.palette.midlight
+ }
+
PlaceholderText {
id: placeholder
x: control.leftPadding
diff --git a/src/quickcontrols/basic/TextField.qml b/src/quickcontrols/basic/TextField.qml
index 67f9533694..976c8ce70f 100644
--- a/src/quickcontrols/basic/TextField.qml
+++ b/src/quickcontrols/basic/TextField.qml
@@ -49,6 +49,14 @@ T.TextField {
implicitHeight: 40
border.width: control.activeFocus ? 2 : 1
color: control.palette.base
- border.color: control.activeFocus ? control.palette.highlight : control.palette.mid
+ border.color: {
+ if (control.activeFocus)
+ return control.palette.highlight
+ else if (Qt.styleHints.accessibility.contrastPreference !== Qt.HighContrast)
+ return control.palette.mid
+ else
+ return Color.blend(control.palette.text, control.palette.base,
+ control.enabled ? 0.0 : 0.5)
+ }
}
}
diff --git a/src/quickcontrols/basic/ToolButton.qml b/src/quickcontrols/basic/ToolButton.qml
index e4bc90d665..bca544dd3e 100644
--- a/src/quickcontrols/basic/ToolButton.qml
+++ b/src/quickcontrols/basic/ToolButton.qml
@@ -35,7 +35,19 @@ T.ToolButton {
implicitWidth: 40
implicitHeight: 40
- opacity: control.down ? 1.0 : 0.5
+ opacity: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast || control.down ? 1.0 : 0.5
color: control.down || control.checked || control.highlighted ? control.palette.mid : control.palette.button
+
+ border.color: {
+ if (control.visualFocus)
+ return control.palette.highlight
+ else if (Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast)
+ return Color.blend(control.palette.buttonText, control.palette.button,
+ control.enabled ? 0.0 : 0.8)
+ else
+ return control.palette.windowText
+ }
+ border.width: control.visualFocus ? 2 :
+ Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 1 : 0
}
}
diff --git a/src/quickcontrols/basic/ToolSeparator.qml b/src/quickcontrols/basic/ToolSeparator.qml
index 2d2cefcdf4..2708c1f3ea 100644
--- a/src/quickcontrols/basic/ToolSeparator.qml
+++ b/src/quickcontrols/basic/ToolSeparator.qml
@@ -17,8 +17,8 @@ T.ToolSeparator {
verticalPadding: vertical ? 2 : 6
contentItem: Rectangle {
- implicitWidth: control.vertical ? 1 : 30
- implicitHeight: control.vertical ? 30 : 1
+ implicitWidth: control.vertical ? (Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 2 : 1) : 30
+ implicitHeight: control.vertical ? 30 : (Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 2 : 1)
color: control.palette.mid
}
}
diff --git a/src/quickcontrols/basic/TreeViewDelegate.qml b/src/quickcontrols/basic/TreeViewDelegate.qml
index f1cf265467..8197794e4c 100644
--- a/src/quickcontrols/basic/TreeViewDelegate.qml
+++ b/src/quickcontrols/basic/TreeViewDelegate.qml
@@ -48,6 +48,9 @@ T.TreeViewDelegate {
background: Rectangle {
implicitHeight: 40 // same as Button.qml
+ border.color: control.current ? control.palette.highlight : control.palette.windowText
+ border.width: Qt.styleHints.accessibility.contrastPreference !== Qt.HighContrast ? 0 :
+ control.current ? 2 : 1
color: control.highlighted
? control.palette.highlight
: (control.treeView.alternatingRows && control.row % 2 !== 0
diff --git a/src/quickcontrols/basic/Tumbler.qml b/src/quickcontrols/basic/Tumbler.qml
index 4bd5c5fed2..44ce8bff60 100644
--- a/src/quickcontrols/basic/Tumbler.qml
+++ b/src/quickcontrols/basic/Tumbler.qml
@@ -45,4 +45,10 @@ T.Tumbler {
}
}
}
+
+ background: Rectangle {
+ visible: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast
+ border.color: control.visualFocus ? control.palette.highlight : control.palette.windowText
+ border.width: control.visualFocus ? 2 : 1
+ }
}
diff --git a/src/quickcontrols/basic/VerticalHeaderViewDelegate.qml b/src/quickcontrols/basic/VerticalHeaderViewDelegate.qml
index 18d75752d9..7f9a0a7fcf 100644
--- a/src/quickcontrols/basic/VerticalHeaderViewDelegate.qml
+++ b/src/quickcontrols/basic/VerticalHeaderViewDelegate.qml
@@ -18,14 +18,15 @@ T.HeaderViewDelegate {
highlighted: selected
background: Rectangle {
- border.color: "#e4e4e4"
- color: "#f6f6f6"
+ border.color: Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ?
+ control.palette.windowText : control.palette.midlight
+ color: control.palette.light
}
contentItem: Label {
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
- color: "#ff26282a"
+ color: control.palette.windowText
text: control.model[control.headerView.textRole]
}
}