24 #include <QApplication>
25 #include <QPushButton>
26 #include <QStyleOption>
30 #include <QPaintEvent>
38 : QPushButton(parent), _pix(pix), _pixmargin(2), _xalignfactor(0.5f), _yalignfactor(0.5f), _pixscale(1.f)
43 _pixscale = parent->devicePixelRatio();
59 QStyleOptionButton opt;
60 initStyleOption(&opt);
63 w = _pix.
width() / _pixscale + _pixmargin;
64 h = _pix.
height() / _pixscale + _pixmargin;
67 w +=
style()->pixelMetric(QStyle::PM_MenuButtonIndicator, &opt,
this);
70 return (
style()->sizeFromContents(QStyle::CT_PushButton, &opt,
QSize(w, h),
this).
71 expandedTo(QApplication::globalStrut()).expandedTo(
QSize(50, 30)));
77 QPushButton::paintEvent(event);
80 QSizeF pixsz = _pix.
size(); pixsz /= _pixscale;
82 _yalignfactor*(height()-(2*_pixmargin+pixsz.
height())) + _pixmargin ),