summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWang Peng <wangpeng@uniontech.com>2021-08-04 14:06:12 +0800
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2021-08-17 03:29:12 +0000
commit6dc9c8991923e9cd0bacf00a05742f0eea574ea5 (patch)
tree51b5cc27ed032dfc507fe2a36ede3297f8b58307 /src
parentb781fa79c1146c94f840e2779d9d35bb14eb722e (diff)
QStyle: allow styles to control the margin around icons in QLineEdit
The styles can't control the margin of the icon container, and its value is hardcoded to a quarter of the iconSize, which is very unfriendly. Add a PixelMetric enum value to allow styles to control the margin. Change-Id: I21274b68d24150db7be78513fe9125f775aa2b00 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/widgets/styles/qcommonstyle.cpp3
-rw-r--r--src/widgets/styles/qstyle.cpp3
-rw-r--r--src/widgets/styles/qstyle.h2
-rw-r--r--src/widgets/widgets/qlineedit_p.cpp2
4 files changed, 8 insertions, 2 deletions
diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp
index d784315ca7..6f6ddfec44 100644
--- a/src/widgets/styles/qcommonstyle.cpp
+++ b/src/widgets/styles/qcommonstyle.cpp
@@ -4807,6 +4807,9 @@ int QCommonStyle::pixelMetric(PixelMetric m, const QStyleOption *opt, const QWid
case PM_LineEditIconSize:
ret = proxy()->pixelMetric(PM_SmallIconSize, opt, widget);
break;
+ case PM_LineEditIconMargin:
+ ret = proxy()->pixelMetric(PM_LineEditIconSize, opt, widget) / 4;
+ break;
case PM_LargeIconSize:
ret = int(QStyleHelper::dpiScaled(32, opt));
diff --git a/src/widgets/styles/qstyle.cpp b/src/widgets/styles/qstyle.cpp
index 368eda3396..f26f1a16c8 100644
--- a/src/widgets/styles/qstyle.cpp
+++ b/src/widgets/styles/qstyle.cpp
@@ -1519,6 +1519,9 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment,
\value PM_LineEditIconSize The default size for icons in a line edit.
This enum value has been introduced in Qt 6.2.
+ \value PM_LineEditIconMargin The margin around icons in a line edit.
+ This enum value has been introduced in Qt 6.3.
+
\value PM_CustomBase Base value for custom pixel metrics. Custom
values must be greater than this value.
diff --git a/src/widgets/styles/qstyle.h b/src/widgets/styles/qstyle.h
index fc94ed2bf5..6d094cc4f2 100644
--- a/src/widgets/styles/qstyle.h
+++ b/src/widgets/styles/qstyle.h
@@ -568,7 +568,7 @@ public:
PM_TitleBarButtonSize,
PM_LineEditIconSize,
-
+ PM_LineEditIconMargin,
// do not add any values below/greater than this
PM_CustomBase = 0xf0000000
};
diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp
index 9298e08501..23174850db 100644
--- a/src/widgets/widgets/qlineedit_p.cpp
+++ b/src/widgets/widgets/qlineedit_p.cpp
@@ -509,7 +509,7 @@ QLineEditPrivate::SideWidgetParameters QLineEditPrivate::sideWidgetParameters()
Q_Q(const QLineEdit);
SideWidgetParameters result;
result.iconSize = q->style()->pixelMetric(QStyle::PM_LineEditIconSize, nullptr, q);
- result.margin = result.iconSize / 4;
+ result.margin = q->style()->pixelMetric(QStyle::PM_LineEditIconMargin, nullptr, q);
result.widgetWidth = result.iconSize + 6;
result.widgetHeight = result.iconSize + 2;
return result;