From d3d22419eb013306af86dee27f5af142ae6d940a 2012-05-30 07:16:40 From: Michal Klocek Date: 2012-05-30 07:16:40 Subject: [PATCH] Adds QChartView empty constructor to be able to promote qchartview in qtdesigner --- diff --git a/src/qchartview.cpp b/src/qchartview.cpp index acfb928..439999a 100644 --- a/src/qchartview.cpp +++ b/src/qchartview.cpp @@ -50,22 +50,25 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE /*! + Constructs a chartView object with parent \a parent. +*/ + +QChartView::QChartView(QWidget *parent) : + QGraphicsView(parent), + d_ptr(new QChartViewPrivate(this)) +{ + +} + +/*! Constructs a chartView object with parent \a parent to display a \a chart. */ + QChartView::QChartView(QChart *chart,QWidget *parent) : QGraphicsView(parent), - d_ptr(new QChartViewPrivate()) + d_ptr(new QChartViewPrivate(this,chart)) { - Q_ASSERT(chart); - d_ptr->m_scene = new QGraphicsScene(this); - d_ptr->m_chart = chart; - setFrameShape(QFrame::NoFrame); - setBackgroundRole(QPalette::Window); - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setScene(d_ptr->m_scene); - d_ptr->m_scene->addItem(chart); - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + } @@ -198,14 +201,22 @@ void QChartView::resizeEvent(QResizeEvent *event) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -QChartViewPrivate::QChartViewPrivate(): -m_scene(0), -m_chart(0), +QChartViewPrivate::QChartViewPrivate(QChartView *q,QChart* chart): +q_ptr(q), +m_scene(new QGraphicsScene(q)), +m_chart(chart), m_presenter(0), m_rubberBand(0), m_rubberBandFlags(QChartView::NoRubberBand) { - + q_ptr->setFrameShape(QFrame::NoFrame); + q_ptr->setBackgroundRole(QPalette::Window); + q_ptr->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + q_ptr->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + q_ptr->setScene(m_scene); + q_ptr->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + if(!m_chart) m_chart = new QChart(); + m_scene->addItem(m_chart); } QChartViewPrivate::~QChartViewPrivate() diff --git a/src/qchartview.h b/src/qchartview.h index 8c74ab4..120331c 100644 --- a/src/qchartview.h +++ b/src/qchartview.h @@ -48,6 +48,7 @@ public: Q_DECLARE_FLAGS(RubberBands, RubberBand) + explicit QChartView(QWidget *parent = 0); explicit QChartView(QChart *chart,QWidget *parent = 0); ~QChartView(); diff --git a/src/qchartview_p.h b/src/qchartview_p.h index cabc288..af7e05d 100644 --- a/src/qchartview_p.h +++ b/src/qchartview_p.h @@ -38,12 +38,18 @@ class ChartPresenter; QTCOMMERCIALCHART_BEGIN_NAMESPACE class QChart; +class QChartView; -struct QChartViewPrivate { +class QChartViewPrivate { - QChartViewPrivate(); +public: + QChartViewPrivate(QChartView *q,QChart *chart = 0); ~QChartViewPrivate(); +protected: + QChartView *q_ptr; + +public: QGraphicsScene *m_scene; QChart *m_chart; ChartPresenter *m_presenter; diff --git a/tests/auto/qchartview/tst_qchartview.cpp b/tests/auto/qchartview/tst_qchartview.cpp index 6390b69..4443e6f 100644 --- a/tests/auto/qchartview/tst_qchartview.cpp +++ b/tests/auto/qchartview/tst_qchartview.cpp @@ -86,6 +86,12 @@ void tst_QChartView::qchartview() QCOMPARE(m_view->rubberBand(), QChartView::NoRubberBand); m_view->show(); QTest::qWaitForWindowShown(m_view); + + delete(new QChartView()); + + QChartView view; + QVERIFY(view.chart()); + } void tst_QChartView::chart_data()