Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <QApplication>
00025 #include <QPushButton>
00026 #include <QStyleOption>
00027 #include <QPainter>
00028 #include <QPixmap>
00029 #include <QStyle>
00030 #include <QPaintEvent>
00031
00032 #include <klfdefs.h>
00033 #include "klfpixmapbutton.h"
00034
00035
00036
00037 KLFPixmapButton::KLFPixmapButton(const QPixmap& pix, QWidget *parent)
00038 : QPushButton(parent), _pix(pix), _pixmargin(2), _xalignfactor(0.5f), _yalignfactor(0.5f)
00039 {
00040 setText(QString());
00041 setIcon(QIcon());
00042 }
00043
00044 QSize KLFPixmapButton::minimumSizeHint() const
00045 {
00046 return sizeHint();
00047 }
00048
00049 QSize KLFPixmapButton::sizeHint() const
00050 {
00051
00052
00053 ensurePolished();
00054
00055 int w = 0, h = 0;
00056 QStyleOptionButton opt;
00057 initStyleOption(&opt);
00058
00059
00060 w = _pix.width() + _pixmargin;
00061 h = _pix.height() + _pixmargin;
00062
00063 if (menu())
00064 w += style()->pixelMetric(QStyle::PM_MenuButtonIndicator, &opt, this);
00065
00066 return (style()->sizeFromContents(QStyle::CT_PushButton, &opt, QSize(w, h), this).
00067 expandedTo(QApplication::globalStrut()).expandedTo(QSize(50, 30)));
00068
00069 }
00070
00071 void KLFPixmapButton::paintEvent(QPaintEvent *event)
00072 {
00073 QPushButton::paintEvent(event);
00074 QPainter p(this);
00075 p.setClipRect(event->rect());
00076 p.drawPixmap(QPointF( _xalignfactor*(width()-(2*_pixmargin+_pix.width())) + _pixmargin,
00077 _yalignfactor*(height()-(2*_pixmargin+_pix.height())) + _pixmargin ),
00078 _pix);
00079 }
00080
00081
00082