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 "flatbutton.h"
#include <QPainter> #include <QPainter>
#include <QMouseEvent>
#include "lib/style.h" #include "lib/style.h"
#include "lib/rippleoverlay.h"
FlatButton::FlatButton(QWidget *parent) FlatButton::FlatButton(QWidget *parent)
: QPushButton(parent) : QPushButton(parent),
_ripple(new RippleOverlay(this))
{ {
setStyle(&Style::instance()); 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) FlatButton::FlatButton(const QString &text, QWidget *parent)
: QPushButton(parent) : QPushButton(parent),
_ripple(new RippleOverlay(this))
{ {
setText(text); setText(text);
setStyle(&Style::instance()); 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() FlatButton::~FlatButton()
{ {
} }
void FlatButton::resizeEvent(QResizeEvent *event)
{
if (_ripple) {
_ripple->setGeometry(rect());
}
QPushButton::resizeEvent(event);
}
void FlatButton::paintEvent(QPaintEvent *event) void FlatButton::paintEvent(QPaintEvent *event)
{ {
Q_UNUSED(event) Q_UNUSED(event)
@ -29,6 +58,13 @@ void FlatButton::paintEvent(QPaintEvent *event)
painter.drawRect(rect().adjusted(0, 0, -1, -1)); painter.drawRect(rect().adjusted(0, 0, -1, -1));
} }
void FlatButton::mousePressEvent(QMouseEvent *event)
{
_ripple->addRipple(event->pos());
QPushButton::mousePressEvent(event);
}
//#include <QDebug> //#include <QDebug>
//#include <QStylePainter> //#include <QStylePainter>
//#include <QMouseEvent> //#include <QMouseEvent>

View File

@ -3,6 +3,8 @@
#include <QPushButton> #include <QPushButton>
class RippleOverlay;
class FlatButton : public QPushButton class FlatButton : public QPushButton
{ {
Q_OBJECT Q_OBJECT
@ -13,7 +15,12 @@ public:
~FlatButton(); ~FlatButton();
protected: protected:
void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE;
void paintEvent(QPaintEvent *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 #endif // FLATBUTTON_H