make Style class singleton

This commit is contained in:
laserpants 2016-03-20 19:43:05 +03:00
parent fc933ae16c
commit 64fa985928
5 changed files with 32 additions and 20 deletions

View File

@ -3,11 +3,13 @@
#include <QMouseEvent>
#include <QApplication>
#include "flatbutton.h"
#include "style.h"
FlatButton::FlatButton(QWidget *parent)
: QAbstractButton(parent),
_overlay(new RippleOverlay(this))
{
setStyle(&Style::instance());
}
FlatButton::FlatButton(const QString &text, QWidget *parent)
@ -15,6 +17,7 @@ FlatButton::FlatButton(const QString &text, QWidget *parent)
_overlay(new RippleOverlay(this))
{
setText(text);
setStyle(&Style::instance());
}
FlatButton::~FlatButton()
@ -51,8 +54,8 @@ QSize FlatButton::sizeHint() const
w += sz.width();
if (!empty || !h)
h = qMax(h, sz.height());
return (style()->sizeFromContents(QStyle::CT_PushButton, &option, QSize(w, h), this).
expandedTo(QApplication::globalStrut()));
return (style()->sizeFromContents(QStyle::CT_PushButton, &option, QSize(w, h), this)
.expandedTo(QApplication::globalStrut()));
}
void FlatButton::resizeEvent(QResizeEvent *event)
@ -68,11 +71,9 @@ void FlatButton::paintEvent(QPaintEvent *event)
QStylePainter painter(this);
QStyleOptionButton option(getStyleOption());
painter.drawControl(QStyle::CE_PushButton, getStyleOption());
painter.drawControl(QStyle::CE_PushButton, option);
if (underMouse()) {
if (testAttribute(Qt::WA_Hover) && underMouse()) {
QRect r(rect());
QBrush brush;
brush.setStyle(Qt::SolidPattern);

View File

@ -5,6 +5,7 @@
#include <QDebug>
#include "iconbutton.h"
#include "../lib/rippleoverlay.h"
#include "style.h"
IconButton::IconButton(const QIcon &icon, QWidget *parent)
: QAbstractButton(parent),
@ -18,6 +19,8 @@ IconButton::IconButton(const QIcon &icon, QWidget *parent)
setSizePolicy(policy);
setGeometryWidget(this);
setStyle(&Style::instance());
}
IconButton::~IconButton()

View File

@ -2,6 +2,7 @@
#include <QEvent>
#include <QHeaderView>
#include "table.h"
#include "style.h"
Table::Table(QWidget *parent)
: QTableWidget(parent)
@ -10,6 +11,8 @@ Table::Table(QWidget *parent)
setSelectionMode(QAbstractItemView::SingleSelection);
setSelectionBehavior(QAbstractItemView::SelectRows);
setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
setStyle(&Style::instance());
}
Table::~Table()

View File

@ -1,17 +1,9 @@
#include <QDebug>
#include <QPainter>
#include <QStyleOption>
#include <QStyleOptionButton>
#include "style.h"
Style::Style()
: QProxyStyle()
{
}
Style::~Style()
{
}
void Style::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p,
const QWidget *w) const
{
@ -20,7 +12,7 @@ void Style::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter
switch (pe) {
case PE_FrameFocusRect:
p->setPen(Qt::blue);
p->drawRect(opt->rect);
p->drawRect(opt->rect.adjusted(0, 0, -1, -1));
break;
default:
QProxyStyle::drawPrimitive(pe, opt, p, w);
@ -33,6 +25,12 @@ void Style::drawControl(ControlElement element, const QStyleOption *opt,
qDebug() << element;
switch (element) {
case CE_CheckBox:
if (const QStyleOptionButton *item = qstyleoption_cast<const QStyleOptionButton *>(opt)) {
}
p->fillRect(opt->rect, Qt::black);
break;
/*
case CE_FocusFrame:
p->fillRect(opt->rect, opt->palette.foreground());

15
style.h
View File

@ -3,14 +3,16 @@
#include <QProxyStyle>
//class Style : public QCommonStyle
class Style : public QProxyStyle
{
Q_OBJECT
public:
Style();
~Style();
static Style &instance()
{
static Style instance;
return instance;
}
void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p,
const QWidget *w = 0) const Q_DECL_OVERRIDE;
@ -24,7 +26,12 @@ public:
const QWidget *w = 0) const Q_DECL_OVERRIDE;
int pixelMetric(PixelMetric m, const QStyleOption *opt = 0, const QWidget *widget = 0) const Q_DECL_OVERRIDE;
private:
Style() {}
Style(Style const&);
void operator=(Style const&);
};
#endif // STYLE_H