From 24226bb5f595581a239356c18a338783a85349ca Mon Sep 17 00:00:00 2001 From: Tang Haixiang Date: Mon, 8 Mar 2021 19:49:44 +0800 Subject: [PATCH] Add setting the ICON size attribute in lineedit to the style plugin When the font is large enough, using PM_SmallIconSize will get a large lineedit,but the icon is very small. This is very unsightly, and the style plug-in hopes to be able to define the size of the icon by itself. Change-Id: I0e35b331301472541d3378e748dbcd074d5419a2 Reviewed-by: Volker Hilsheimer --- src/widgets/styles/qcommonstyle.cpp | 3 +++ src/widgets/styles/qfusionstyle.cpp | 3 +++ src/widgets/styles/qstyle.cpp | 3 +++ src/widgets/styles/qstyle.h | 2 ++ src/widgets/widgets/qlineedit_p.cpp | 2 +- 5 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp index a2f52562c81..358edc230bd 100644 --- a/src/widgets/styles/qcommonstyle.cpp +++ b/src/widgets/styles/qcommonstyle.cpp @@ -4828,6 +4828,9 @@ int QCommonStyle::pixelMetric(PixelMetric m, const QStyleOption *opt, const QWid case PM_IconViewIconSize: ret = proxy()->pixelMetric(PM_LargeIconSize, opt, widget); break; + case PM_LineEditIconSize: + ret = proxy()->pixelMetric(PM_SmallIconSize, opt, widget); + break; case PM_LargeIconSize: ret = int(QStyleHelper::dpiScaled(32, opt)); diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp index 5772c7d4c48..51cd5109a0d 100644 --- a/src/widgets/styles/qfusionstyle.cpp +++ b/src/widgets/styles/qfusionstyle.cpp @@ -3045,6 +3045,9 @@ int QFusionStyle::pixelMetric(PixelMetric metric, const QStyleOption *option, co case PM_ListViewIconSize: val = 24; break; + case PM_LineEditIconSize: + val = 24; + break; case PM_DialogButtonsSeparator: case PM_ScrollBarSliderMin: val = 26; diff --git a/src/widgets/styles/qstyle.cpp b/src/widgets/styles/qstyle.cpp index 8aa423c224b..9c4e66b0ba8 100644 --- a/src/widgets/styles/qstyle.cpp +++ b/src/widgets/styles/qstyle.cpp @@ -1516,6 +1516,9 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, \value PM_TitleBarButtonSize The size of buttons on a title bar. This enum value has been introduced in Qt 5.8. + \value PM_LineEditIconSize The default size for icons in a line edit. + This enum value has been introduced in Qt 6.2. + \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 ba64a6b1bf6..c3c99d99746 100644 --- a/src/widgets/styles/qstyle.h +++ b/src/widgets/styles/qstyle.h @@ -567,6 +567,8 @@ public: PM_TitleBarButtonIconSize, PM_TitleBarButtonSize, + PM_LineEditIconSize, + // 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 4143b848b51..7526379f3c6 100644 --- a/src/widgets/widgets/qlineedit_p.cpp +++ b/src/widgets/widgets/qlineedit_p.cpp @@ -495,7 +495,7 @@ QLineEditPrivate::SideWidgetParameters QLineEditPrivate::sideWidgetParameters() { Q_Q(const QLineEdit); SideWidgetParameters result; - result.iconSize = q->style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, q); + result.iconSize = q->style()->pixelMetric(QStyle::PM_LineEditIconSize, nullptr, q); result.margin = result.iconSize / 4; result.widgetWidth = result.iconSize + 6; result.widgetHeight = result.iconSize + 2;