sort out pimpl initialization order problems

This commit is contained in:
laserpants 2016-06-22 16:44:47 +03:00
parent 21efa88042
commit 9fc482e42a
4 changed files with 69 additions and 3 deletions

View File

@ -11,8 +11,8 @@
FlatButtonPrivate::FlatButtonPrivate(FlatButton *q) FlatButtonPrivate::FlatButtonPrivate(FlatButton *q)
: q_ptr(q), : q_ptr(q),
ripple(new RippleOverlay), ripple(new RippleOverlay), //new RippleOverlay(q)),
delegate(0), delegate(0), //new FlatButtonDelegate(q)),
role(Material::Default), role(Material::Default),
rippleStyle(Material::PositionedRipple), rippleStyle(Material::PositionedRipple),
cornerRadius(3), cornerRadius(3),
@ -23,6 +23,7 @@ FlatButtonPrivate::FlatButtonPrivate(FlatButton *q)
useFixedRippleRadius(false), useFixedRippleRadius(false),
fixedRippleRadius(64) fixedRippleRadius(64)
{ {
qDebug() << "FlatButtonPrivate";
} }
FlatButtonPrivate::~FlatButtonPrivate() FlatButtonPrivate::~FlatButtonPrivate()
@ -282,6 +283,8 @@ FlatButton::FlatButton(FlatButtonPrivate &d, QWidget *parent)
d_ptr(&d) d_ptr(&d)
{ {
d_func()->init(); d_func()->init();
qDebug() << "FlatButton::FlatButton";
} }
void FlatButton::resizeEvent(QResizeEvent *event) void FlatButton::resizeEvent(QResizeEvent *event)

View File

@ -5,10 +5,10 @@
#include <QSignalTransition> #include <QSignalTransition>
#include <QPropertyAnimation> #include <QPropertyAnimation>
#include <QPainter> #include <QPainter>
#include <QDebug>
#include <QStylePainter> #include <QStylePainter>
#include <QStyleOption> #include <QStyleOption>
#include <QMouseEvent> #include <QMouseEvent>
#include <QDebug>
RaisedButtonPrivate::RaisedButtonPrivate(RaisedButton *q) RaisedButtonPrivate::RaisedButtonPrivate(RaisedButton *q)
: FlatButtonPrivate(q), : FlatButtonPrivate(q),
@ -17,6 +17,7 @@ RaisedButtonPrivate::RaisedButtonPrivate(RaisedButton *q)
pressedState(new QState), pressedState(new QState),
effect(new QGraphicsDropShadowEffect) effect(new QGraphicsDropShadowEffect)
{ {
qDebug() << "RaisedButtonPrivate";
} }
RaisedButtonPrivate::~RaisedButtonPrivate() RaisedButtonPrivate::~RaisedButtonPrivate()
@ -100,6 +101,8 @@ void RaisedButtonPrivate::init()
RaisedButton::RaisedButton(QWidget *parent) RaisedButton::RaisedButton(QWidget *parent)
: FlatButton(*new RaisedButtonPrivate(this), parent) : FlatButton(*new RaisedButtonPrivate(this), parent)
{ {
qDebug() << "RaisedButton::RaisedButton";
d_func()->init(); d_func()->init();
setMinimumHeight(42); setMinimumHeight(42);

View File

@ -1,3 +1,47 @@
#include "mainwindow.h"
#include <QPainter>
#include <QVBoxLayout>
#include "components/flatbutton.h"
#include "components/raisedbutton.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QVBoxLayout *layout = new QVBoxLayout;
QWidget *widget = new QWidget;
widget->setLayout(layout);
setCentralWidget(widget);
// FlatButton *button = new FlatButton;
// button->setText("Hello");
//
// layout->addWidget(button);
RaisedButton *button;
button = new RaisedButton;
button->setText("Hello");
layout->addWidget(button);
}
MainWindow::~MainWindow()
{
}
void MainWindow::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event)
QPainter painter(this);
painter.setPen(Qt::red);
painter.drawRect(rect());
}
/*
#include <QApplication> #include <QApplication>
#include <QMenu> #include <QMenu>
#include <QMenuBar> #include <QMenuBar>
@ -255,3 +299,4 @@ void MainWindow::_initMenu() const
connect(components, SIGNAL(triggered(QAction *)), this, SLOT(showWidget(QAction *))); connect(components, SIGNAL(triggered(QAction *)), this, SLOT(showWidget(QAction *)));
connect(exitAction, SIGNAL(triggered(bool)), qApp, SLOT(quit())); connect(exitAction, SIGNAL(triggered(bool)), qApp, SLOT(quit()));
} }
*/

View File

@ -3,6 +3,19 @@
#include <QMainWindow> #include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void paintEvent(QPaintEvent *event);
};
/*
class About; class About;
class FlatButtonExamples; class FlatButtonExamples;
class RaisedButtonExamples; class RaisedButtonExamples;
@ -59,4 +72,6 @@ private:
Snackbar *snackbar; Snackbar *snackbar;
}; };
*/
#endif // MAINWINDOW_H #endif // MAINWINDOW_H