From 05b8ba51550127c85cd2db5cb819b695b56c57ce Mon Sep 17 00:00:00 2001 From: Alexander Volkov Date: Wed, 3 Oct 2018 14:21:09 +0300 Subject: [PATCH] QLineEdit: take the size of actions' icons from a style The height of a line edit depends on the height of its font, which in turn depends on DPI. So use the DPI-scaled icon size from a style instead of hard-coded values. Task-number: QTBUG-65627 Change-Id: Ic1f5af61b0d6346cfbc828817c4a3a39296a41ba Reviewed-by: Richard Moe Gustavsen --- src/widgets/widgets/qlineedit.cpp | 3 ++- src/widgets/widgets/qlineedit_p.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index 96c5982e0c..242a4405ca 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -680,7 +680,8 @@ QSize QLineEdit::sizeHint() const Q_D(const QLineEdit); ensurePolished(); QFontMetrics fm(font()); - int h = qMax(fm.height(), 14) + 2*d->verticalMargin + const int iconSize = style()->pixelMetric(QStyle::PM_SmallIconSize, 0, this); + int h = qMax(fm.height(), iconSize - 2) + 2*d->verticalMargin + d->topTextMargin + d->bottomTextMargin + d->topmargin + d->bottommargin; int w = fm.horizontalAdvance(QLatin1Char('x')) * 17 + 2*d->horizontalMargin diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp index 33d542abc0..fce3d47b17 100644 --- a/src/widgets/widgets/qlineedit_p.cpp +++ b/src/widgets/widgets/qlineedit_p.cpp @@ -441,7 +441,7 @@ QLineEditPrivate::SideWidgetParameters QLineEditPrivate::sideWidgetParameters() { Q_Q(const QLineEdit); SideWidgetParameters result; - result.iconSize = q->height() < 34 ? 16 : 32; + result.iconSize = q->style()->pixelMetric(QStyle::PM_SmallIconSize, 0, q); result.margin = result.iconSize / 4; result.widgetWidth = result.iconSize + 6; result.widgetHeight = result.iconSize + 2;