qt-material-widgets/components/flatbutton.cpp

108 lines
2.1 KiB
C++
Raw Normal View History

2016-03-18 11:14:06 +00:00
#include "flatbutton.h"
2016-05-14 09:10:30 +00:00
#include <QPainter>
2016-05-14 09:42:15 +00:00
#include <QMouseEvent>
2016-05-14 10:41:40 +00:00
#include <QStylePainter>
#include <QStyleOption>
#include <QDebug>
2016-04-26 23:57:16 +00:00
#include "lib/style.h"
2016-05-14 09:42:15 +00:00
#include "lib/rippleoverlay.h"
2016-03-18 11:14:06 +00:00
FlatButton::FlatButton(QWidget *parent)
2016-05-14 09:42:15 +00:00
: QPushButton(parent),
_ripple(new RippleOverlay(this))
2016-03-18 11:14:06 +00:00
{
2016-03-20 16:43:05 +00:00
setStyle(&Style::instance());
2016-05-14 09:42:15 +00:00
setAttribute(Qt::WA_Hover);
setMouseTracking(true);
QFont f(font());
f.setCapitalization(QFont::AllUppercase);
f.setPointSizeF(10.5);
f.setStyleName("Medium");
setFont(f);
2016-03-18 11:14:06 +00:00
}
FlatButton::FlatButton(const QString &text, QWidget *parent)
2016-05-14 09:42:15 +00:00
: QPushButton(parent),
_ripple(new RippleOverlay(this))
2016-03-18 11:14:06 +00:00
{
setText(text);
2016-03-18 14:07:20 +00:00
2016-05-14 08:52:28 +00:00
setStyle(&Style::instance());
2016-05-14 09:42:15 +00:00
setAttribute(Qt::WA_Hover);
setMouseTracking(true);
QFont f(font());
f.setCapitalization(QFont::AllUppercase);
f.setPointSizeF(10.5);
f.setStyleName("Medium");
setFont(f);
2016-03-18 14:07:20 +00:00
}
2016-05-14 08:59:08 +00:00
FlatButton::~FlatButton()
{
}
2016-05-14 09:42:15 +00:00
void FlatButton::resizeEvent(QResizeEvent *event)
{
if (_ripple) {
_ripple->setGeometry(rect());
}
QPushButton::resizeEvent(event);
}
2016-05-14 09:10:30 +00:00
void FlatButton::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event)
2016-05-14 10:41:40 +00:00
//painter.drawRect(rect().adjusted(0, 0, -1, -1));
2016-05-14 09:10:30 +00:00
2016-05-14 10:41:40 +00:00
QStylePainter painter(this);
QStyleOptionButton option;
initStyleOption(&option);
option.features |= QStyleOptionButton::Flat;
painter.drawControl(QStyle::CE_PushButtonLabel, option);
if (testAttribute(Qt::WA_Hover) && underMouse())
{
QPainter painter(this);
QBrush brush;
brush.setStyle(Qt::SolidPattern);
painter.setOpacity(0.1);
painter.fillRect(rect(), brush);
}
#ifdef DEBUG_LAYOUT
QPainter debug(this);
QPen pen;
pen.setColor(Qt::red);
pen.setWidth(2);
debug.setPen(pen);
debug.drawRect(rect());
#endif
2016-05-14 09:10:30 +00:00
}
2016-05-14 09:42:15 +00:00
void FlatButton::mousePressEvent(QMouseEvent *event)
{
_ripple->addRipple(event->pos());
QPushButton::mousePressEvent(event);
}
2016-05-14 10:41:40 +00:00
void FlatButton::enterEvent(QEvent *event)
{
update();
QPushButton::enterEvent(event);
}
void FlatButton::leaveEvent(QEvent *event)
{
update();
QPushButton::leaveEvent(event);
}