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

View File

@ -5,10 +5,10 @@
#include <QSignalTransition>
#include <QPropertyAnimation>
#include <QPainter>
#include <QDebug>
#include <QStylePainter>
#include <QStyleOption>
#include <QMouseEvent>
#include <QDebug>
RaisedButtonPrivate::RaisedButtonPrivate(RaisedButton *q)
: FlatButtonPrivate(q),
@ -17,6 +17,7 @@ RaisedButtonPrivate::RaisedButtonPrivate(RaisedButton *q)
pressedState(new QState),
effect(new QGraphicsDropShadowEffect)
{
qDebug() << "RaisedButtonPrivate";
}
RaisedButtonPrivate::~RaisedButtonPrivate()
@ -100,6 +101,8 @@ void RaisedButtonPrivate::init()
RaisedButton::RaisedButton(QWidget *parent)
: FlatButton(*new RaisedButtonPrivate(this), parent)
{
qDebug() << "RaisedButton::RaisedButton";
d_func()->init();
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 <QMenu>
#include <QMenuBar>
@ -255,3 +299,4 @@ void MainWindow::_initMenu() const
connect(components, SIGNAL(triggered(QAction *)), this, SLOT(showWidget(QAction *)));
connect(exitAction, SIGNAL(triggered(bool)), qApp, SLOT(quit()));
}
*/

View File

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