handle overlay geometry

This commit is contained in:
laserpants 2016-05-14 12:42:15 +03:00
parent cdd16e1230
commit 51cf801c88
2 changed files with 45 additions and 2 deletions

View File

@ -1,25 +1,54 @@
#include "flatbutton.h"
#include <QPainter>
#include <QMouseEvent>
#include "lib/style.h"
#include "lib/rippleoverlay.h"
FlatButton::FlatButton(QWidget *parent)
: QPushButton(parent)
: QPushButton(parent),
_ripple(new RippleOverlay(this))
{
setStyle(&Style::instance());
setAttribute(Qt::WA_Hover);
setMouseTracking(true);
QFont f(font());
f.setCapitalization(QFont::AllUppercase);
f.setPointSizeF(10.5);
f.setStyleName("Medium");
setFont(f);
}
FlatButton::FlatButton(const QString &text, QWidget *parent)
: QPushButton(parent)
: QPushButton(parent),
_ripple(new RippleOverlay(this))
{
setText(text);
setStyle(&Style::instance());
setAttribute(Qt::WA_Hover);
setMouseTracking(true);
QFont f(font());
f.setCapitalization(QFont::AllUppercase);
f.setPointSizeF(10.5);
f.setStyleName("Medium");
setFont(f);
}
FlatButton::~FlatButton()
{
}
void FlatButton::resizeEvent(QResizeEvent *event)
{
if (_ripple) {
_ripple->setGeometry(rect());
}
QPushButton::resizeEvent(event);
}
void FlatButton::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event)
@ -29,6 +58,13 @@ void FlatButton::paintEvent(QPaintEvent *event)
painter.drawRect(rect().adjusted(0, 0, -1, -1));
}
void FlatButton::mousePressEvent(QMouseEvent *event)
{
_ripple->addRipple(event->pos());
QPushButton::mousePressEvent(event);
}
//#include <QDebug>
//#include <QStylePainter>
//#include <QMouseEvent>

View File

@ -3,6 +3,8 @@
#include <QPushButton>
class RippleOverlay;
class FlatButton : public QPushButton
{
Q_OBJECT
@ -13,7 +15,12 @@ public:
~FlatButton();
protected:
void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE;
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
private:
RippleOverlay *const _ripple;
};
#endif // FLATBUTTON_H