- bool leftToRight = (layoutDirection() == Qt::LeftToRight);
- Side realLeft = (leftToRight ? Left : Right);
- Side realRight = (leftToRight ? Right : Left);
-
- int leftMargin = m_d->m_iconbutton[realLeft]->pixmap().width() + 8;
- int rightMargin = m_d->m_iconbutton[realRight]->pixmap().width() + 8;
- // Note KDE does not reserve space for the highlight color
- if (style()->inherits("OxygenStyle")) {
- leftMargin = qMax(24, leftMargin);
- rightMargin = qMax(24, rightMargin);
- }
-
- QMargins margins((m_d->m_iconEnabled[realLeft] ? leftMargin : 0), 0,
- (m_d->m_iconEnabled[realRight] ? rightMargin : 0), 0);
-
- setTextMargins(margins);
+ bool leftToRight = (layoutDirection() == Qt::LeftToRight);
+ Side realLeft = (leftToRight ? Left : Right);
+ Side realRight = (leftToRight ? Right : Left);
+
+ qreal dpr = 1.0;
+#if QT_VERSION >= 0x050000
+ // Consider device/pixel ratio (HiDPI)
+ dpr = devicePixelRatio();
+#endif
+ int leftMargin = (m_d->m_iconbutton[realLeft]->pixmap().width() / dpr ) + 8;
+ int rightMargin = (m_d->m_iconbutton[realRight]->pixmap().width() / dpr) + 8;
+ // Note KDE does not reserve space for the highlight color
+ if (style()->inherits("OxygenStyle")) {
+ leftMargin = qMax(24, leftMargin);
+ rightMargin = qMax(24, rightMargin);
+ }
+
+ QMargins margins((m_d->m_iconEnabled[realLeft] ? leftMargin : 0), 0,
+ (m_d->m_iconEnabled[realRight] ? rightMargin : 0), 0);
+
+ setTextMargins(margins);