introduce corner radius property for flat button

This commit is contained in:
laserpants 2016-05-30 01:25:17 +03:00
parent 0ec35cbd70
commit d2002ad5e5
7 changed files with 36 additions and 3 deletions

View File

@ -75,6 +75,21 @@ void FlatButton::setRippleStyle(RippleStyle style)
d->rippleStyle = style;
}
void FlatButton::setCornerRadius(qreal radius)
{
Q_D(FlatButton);
d->cornerRadius = radius;
update();
}
qreal FlatButton::cornerRadius() const
{
Q_D(const FlatButton);
return d->cornerRadius;
}
void FlatButton::setRole(Material::Role role)
{
Q_D(FlatButton);
@ -129,13 +144,14 @@ void FlatButton::paintEvent(QPaintEvent *event)
painter.setRenderHint(QPainter::Antialiasing);
if (isEnabled() && bgOpacity > 0) {
const qreal cr = d->cornerRadius;
QBrush brush;
brush.setStyle(Qt::SolidPattern);
brush.setColor(d->delegate->backgroundColor());
painter.setOpacity(bgOpacity);
painter.setBrush(brush);
painter.setPen(Qt::NoPen);
painter.drawRoundedRect(rect(), 3, 3);
painter.drawRoundedRect(rect(), cr, cr);
}
if (isEnabled() && haloOpacity > 0) {

View File

@ -11,6 +11,8 @@ class FlatButton : public QPushButton
{
Q_OBJECT
Q_PROPERTY(qreal cornerRadius WRITE setCornerRadius READ cornerRadius)
public:
enum RippleStyle {
CenteredRipple,
@ -26,6 +28,9 @@ public:
void setRippleStyle(RippleStyle style);
void setCornerRadius(qreal radius);
qreal cornerRadius() const;
protected:
FlatButton(FlatButtonPrivate &d, QWidget *parent = 0);

View File

@ -18,7 +18,8 @@ public:
FlatButtonPrivate(FlatButton *q)
: q_ptr(q),
role(Material::Default),
rippleStyle(FlatButton::PositionedRipple)
rippleStyle(FlatButton::PositionedRipple),
cornerRadius(3)
{}
void init();
@ -29,6 +30,7 @@ public:
FlatButtonDelegate *delegate;
Material::Role role;
FlatButton::RippleStyle rippleStyle;
qreal cornerRadius;
};
#endif // FLATBUTTON_P_H

View File

@ -149,13 +149,15 @@ void RaisedButton::paintEvent(QPaintEvent *event)
QBrush brush;
const qreal cr = d->cornerRadius;
brush.setStyle(Qt::SolidPattern);
brush.setColor(isEnabled()
? palette().color(QPalette::Active, QPalette::Background)
: palette().color(QPalette::Disabled, QPalette::Background));
painter.setBrush(brush);
painter.setPen(Qt::NoPen);
painter.drawRoundedRect(rect(), 3, 3);
painter.drawRoundedRect(rect(), cr, cr);
if (isEnabled()) {
const qreal hs = static_cast<qreal>(width())*d->delegate->focusHaloSize()/2;

View File

View File

@ -0,0 +1,4 @@
#ifndef TABS_INTERNAL_H
#define TABS_INTERNAL_H
#endif // TABS_INTERNAL_H

4
components/tabs_p.h Normal file
View File

@ -0,0 +1,4 @@
#ifndef TABS_P_H
#define TABS_P_H
#endif // TABS_P_H