make FlatButton pimpl

This commit is contained in:
laserpants 2016-05-14 14:06:20 +03:00
parent c4a17f9dfa
commit 4bc4d6aa92
5 changed files with 59 additions and 37 deletions

View File

@ -7,36 +7,19 @@
#include "lib/style.h"
#include "lib/rippleoverlay.h"
#include "flatbutton_p.h"
FlatButton::FlatButton(QWidget *parent)
: QPushButton(parent),
_ripple(new RippleOverlay(this))
d_ptr(new FlatButtonPrivate(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),
_ripple(new RippleOverlay(this))
d_ptr(new FlatButtonPrivate(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()
@ -45,8 +28,10 @@ FlatButton::~FlatButton()
void FlatButton::resizeEvent(QResizeEvent *event)
{
if (_ripple) {
_ripple->setGeometry(rect());
Q_D(FlatButton);
if (d->ripple) {
d->ripple->setGeometry(rect());
}
QPushButton::resizeEvent(event);
@ -56,8 +41,6 @@ void FlatButton::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event)
//painter.drawRect(rect().adjusted(0, 0, -1, -1));
QStylePainter painter(this);
QStyleOptionButton option;
@ -87,7 +70,9 @@ void FlatButton::paintEvent(QPaintEvent *event)
void FlatButton::mousePressEvent(QMouseEvent *event)
{
_ripple->addRipple(event->pos());
Q_D(FlatButton);
d->ripple->addRipple(event->pos());
QPushButton::mousePressEvent(event);
}

View File

@ -2,8 +2,9 @@
#define FLATBUTTON_H
#include <QPushButton>
#include <QScopedPointer>
class RippleOverlay;
class FlatButtonPrivate;
class FlatButton : public QPushButton
{
@ -21,8 +22,11 @@ protected:
void enterEvent(QEvent *event) Q_DECL_OVERRIDE;
void leaveEvent(QEvent *event) Q_DECL_OVERRIDE;
const QScopedPointer<FlatButtonPrivate> d_ptr;
private:
RippleOverlay *const _ripple;
Q_DISABLE_COPY(FlatButton)
Q_DECLARE_PRIVATE(FlatButton)
};
#endif // FLATBUTTON_H

34
components/flatbutton_p.h Normal file
View File

@ -0,0 +1,34 @@
#ifndef FLATBUTTON_P_H
#define FLATBUTTON_P_H
#include "flatbutton.h"
#include "lib/rippleoverlay.h"
class FlatButtonPrivate
{
Q_DISABLE_COPY(FlatButtonPrivate)
Q_DECLARE_PUBLIC(FlatButton)
public:
FlatButtonPrivate(FlatButton *parent);
FlatButton *const q_ptr;
RippleOverlay *const ripple;
};
FlatButtonPrivate::FlatButtonPrivate(FlatButton *parent)
: q_ptr(parent),
ripple(new RippleOverlay(parent))
{
parent->setStyle(&Style::instance());
parent->setAttribute(Qt::WA_Hover);
parent->setMouseTracking(true);
QFont font(parent->font());
font.setCapitalization(QFont::AllUppercase);
font.setPointSizeF(10.5);
font.setStyleName("Medium");
parent->setFont(font);
}
#endif // FLATBUTTON_P_H

View File

@ -52,17 +52,15 @@ SliderPrivate::SliderPrivate(Slider *parent)
oldValue(parent->value()),
trackWidth(2)
{
Q_Q(Slider);
q->setMouseTracking(true);
q->setFocusPolicy(Qt::StrongFocus);
q->setPageStep(1);
parent->setMouseTracking(true);
parent->setFocusPolicy(Qt::StrongFocus);
parent->setPageStep(1);
QSizePolicy sp(QSizePolicy::Expanding, QSizePolicy::Fixed);
if (q->orientation() == Qt::Vertical)
if (parent->orientation() == Qt::Vertical)
sp.transpose();
q->setSizePolicy(sp);
q->setAttribute(Qt::WA_WState_OwnSizePolicy, false);
parent->setSizePolicy(sp);
parent->setAttribute(Qt::WA_WState_OwnSizePolicy, false);
machine->start();

View File

@ -102,7 +102,8 @@ HEADERS += mainwindow.h \
components/searchfield.h \
lib/theme.h \
lib/theme_p.h \
components/sliderinternal.h
components/sliderinternal.h \
components/flatbutton_p.h
RESOURCES += \
resources.qrc