From 58c40da75632f9021d4080019a70ea4fa068d6ae Mon Sep 17 00:00:00 2001 From: lazerpants Date: Fri, 18 Mar 2016 17:07:20 +0300 Subject: [PATCH] basic button behavior --- flatbutton.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ flatbutton.h | 5 +++++ 2 files changed, 49 insertions(+) diff --git a/flatbutton.cpp b/flatbutton.cpp index 5dd7b43..4be03a8 100644 --- a/flatbutton.cpp +++ b/flatbutton.cpp @@ -1,3 +1,6 @@ +#include +#include +#include #include "flatbutton.h" FlatButton::FlatButton(QWidget *parent) @@ -14,3 +17,44 @@ FlatButton::FlatButton(const QString &text, QWidget *parent) FlatButton::~FlatButton() { } + +void FlatButton::paintEvent(QPaintEvent *event) +{ + Q_UNUSED(event) + + QStylePainter painter(this); + + QStyleOptionButton option; + option.initFrom(this); + option.features = QStyleOptionButton::None; + option.features |= QStyleOptionButton::Flat; + if (isChecked()) + option.state |= QStyle::State_On; + option.text = text(); + option.icon = icon(); + option.iconSize = iconSize(); + + painter.drawControl(QStyle::CE_PushButton, option); + + if (underMouse()) { + QRect r = rect(); + QBrush brush; + brush.setStyle(Qt::SolidPattern); + painter.setOpacity(0.1); + painter.fillRect(r, brush); + } +} + +void FlatButton::enterEvent(QEvent *event) +{ + Q_UNUSED(event) + + update(); +} + +void FlatButton::leaveEvent(QEvent *event) +{ + Q_UNUSED(event) + + update(); +} diff --git a/flatbutton.h b/flatbutton.h index b5e25ea..658211c 100644 --- a/flatbutton.h +++ b/flatbutton.h @@ -11,6 +11,11 @@ public: explicit FlatButton(QWidget *parent = 0); explicit FlatButton(const QString &text, QWidget *parent = 0); ~FlatButton(); + +protected: + void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; + void enterEvent(QEvent *event) Q_DECL_OVERRIDE; + void leaveEvent(QEvent *event) Q_DECL_OVERRIDE; }; #endif // FLATBUTTON_H