basic button behavior
This commit is contained in:
parent
a3eebc0e2f
commit
58c40da756
|
@ -1,3 +1,6 @@
|
|||
#include <QDebug>
|
||||
#include <QStylePainter>
|
||||
#include <QStyleOptionButton>
|
||||
#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();
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue