diff --git a/examples/examples.pro b/examples/examples.pro index 9eaafa7..3bc333e 100644 --- a/examples/examples.pro +++ b/examples/examples.pro @@ -23,4 +23,5 @@ SUBDIRS += \ legend \ barmodelmapper \ qmlpiechart \ - lineandbar + lineandbar \ + horizontalbarchart diff --git a/examples/horizontalbarchart/horizontalbarchart.pro b/examples/horizontalbarchart/horizontalbarchart.pro new file mode 100644 index 0000000..61ec088 --- /dev/null +++ b/examples/horizontalbarchart/horizontalbarchart.pro @@ -0,0 +1,6 @@ +!include( ../examples.pri ) { + error( "Couldn't find the examples.pri file!" ) +} + +TARGET = horizontalbarchart +SOURCES += main.cpp diff --git a/examples/horizontalbarchart/main.cpp b/examples/horizontalbarchart/main.cpp new file mode 100644 index 0000000..8c0937d --- /dev/null +++ b/examples/horizontalbarchart/main.cpp @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the Qt Commercial Charts Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include + +QTCOMMERCIALCHART_USE_NAMESPACE + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + +//![1] + QBarSet *set0 = new QBarSet("Jane"); + QBarSet *set1 = new QBarSet("John"); + QBarSet *set2 = new QBarSet("Axel"); + QBarSet *set3 = new QBarSet("Mary"); + QBarSet *set4 = new QBarSet("Samantha"); + + *set0 << 1 << 2 << 3 << 4 << 5 << 6; + *set1 << 5 << 0 << 0 << 4 << 0 << 7; + *set2 << 3 << 5 << 8 << 13 << 8 << 5; + *set3 << 5 << 6 << 7 << 3 << 4 << 5; + *set4 << 9 << 7 << 5 << 3 << 1 << 2; +//![1] + +//![2] + QHorizontalBarSeries *series = new QHorizontalBarSeries(); + series->append(set0); + series->append(set1); + series->append(set2); + series->append(set3); + series->append(set4); + +//![2] + +//![3] + QChart* chart = new QChart(); + chart->addSeries(series); + chart->setTitle("Simple horizontal barchart example"); + chart->createDefaultAxes(); +//![3] + +//![4] + QStringList categories; + categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun"; + QBarCategoriesAxis* axis = new QBarCategoriesAxis(); + axis->append(categories); + chart->createDefaultAxes(); + chart->setAxisY(axis,series); +//![4] + +//![5] + chart->legend()->setVisible(true); + chart->legend()->setAlignment(Qt::AlignBottom); +//![5] + +//![6] + QChartView* chartView = new QChartView(chart); + chartView->setRenderHint(QPainter::Antialiasing); +//![6] + +//![7] + QMainWindow window; + window.setCentralWidget(chartView); + window.resize(400, 300); + window.show(); +//![7] + + return a.exec(); +} diff --git a/src/animations/animations.pri b/src/animations/animations.pri index 783236f..67c2908 100644 --- a/src/animations/animations.pri +++ b/src/animations/animations.pri @@ -11,7 +11,8 @@ SOURCES += \ $$PWD/baranimation.cpp \ $$PWD/stackedbaranimation.cpp \ $$PWD/percentbaranimation.cpp \ - $$PWD/abstractbaranimation.cpp + $$PWD/abstractbaranimation.cpp \ + $$PWD/horizontalbaranimation.cpp PRIVATE_HEADERS += \ @@ -25,4 +26,5 @@ PRIVATE_HEADERS += \ $$PWD/baranimation_p.h \ $$PWD/stackedbaranimation_p.h \ $$PWD/percentbaranimation_p.h \ - $$PWD/abstractbaranimation_p.h + $$PWD/abstractbaranimation_p.h \ + $$PWD/horizontalbaranimation_p.h diff --git a/src/animations/horizontalbaranimation.cpp b/src/animations/horizontalbaranimation.cpp new file mode 100644 index 0000000..250561d --- /dev/null +++ b/src/animations/horizontalbaranimation.cpp @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the Qt Commercial Charts Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "horizontalbaranimation_p.h" +#include "abstractbarchartitem_p.h" +#include + +Q_DECLARE_METATYPE(QVector) + +QTCOMMERCIALCHART_BEGIN_NAMESPACE + +HorizontalBarAnimation::HorizontalBarAnimation(AbstractBarChartItem *item) : + AbstractBarAnimation(item) +{ +} + +HorizontalBarAnimation::~HorizontalBarAnimation() +{ + +} + + +QVariant HorizontalBarAnimation::interpolated(const QVariant &from, const QVariant &to, qreal progress) const +{ + // TODO: + Q_UNUSED(from); + Q_UNUSED(to); + Q_UNUSED(progress); + return to; +} + +#include "moc_horizontalbaranimation_p.cpp" + +QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/animations/horizontalbaranimation_p.h b/src/animations/horizontalbaranimation_p.h new file mode 100644 index 0000000..9c8438b --- /dev/null +++ b/src/animations/horizontalbaranimation_p.h @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the Qt Commercial Charts Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// W A R N I N G +// ------------- +// +// This file is not part of the QtCommercial Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. + +#ifndef HORIZONTALBARANIMATION_P_H +#define HORIZONTALBARANIMATION_P_H + +#include "abstractbaranimation_p.h" +#include "chartanimation_p.h" +#include "abstractbarchartitem_p.h" + +QTCOMMERCIALCHART_BEGIN_NAMESPACE + +class HorizontalBarAnimation : public AbstractBarAnimation +{ + Q_OBJECT +public: + explicit HorizontalBarAnimation(AbstractBarChartItem *item); + ~HorizontalBarAnimation(); + + virtual QVariant interpolated(const QVariant &from, const QVariant &to, qreal progress) const; + +}; + +QTCOMMERCIALCHART_END_NAMESPACE + +#endif // HORIZONTALBARANIMATION_P_H diff --git a/src/barchart/barchartitem.cpp b/src/barchart/barchartitem.cpp index 5c36914..9625c03 100644 --- a/src/barchart/barchartitem.cpp +++ b/src/barchart/barchartitem.cpp @@ -56,10 +56,10 @@ QVector BarChartItem::calculateLayout() for (int set = 0; set < setCount; set++) { QBarSetPrivate* barSet = m_series->d_func()->barsetAt(set)->d_ptr.data(); - qreal xPos = (barSet->at(category).x() - m_domainMinX) * scaleX + m_rect.left(); + qreal xPos = (barSet->pos(category) - m_domainMinX) * scaleX + m_rect.left(); xPos -= setCount*barWidth/2; xPos += set*barWidth; - qreal barHeight = barSet->at(category).y() * scaleY; + qreal barHeight = barSet->value(category) * scaleY; Bar* bar = m_bars.at(itemIndex); QRectF rect(xPos, yPos - barHeight, barWidth, barHeight); @@ -74,8 +74,8 @@ QVector BarChartItem::calculateLayout() QGraphicsSimpleTextItem* label = m_labels.at(itemIndex); - if (!qFuzzyIsNull(barSet->at(category).y())) { - label->setText(QString::number(barSet->at(category).y())); + if (!qFuzzyIsNull(barSet->value(category))) { + label->setText(QString::number(barSet->value(category))); } else { label->setText(QString("")); } diff --git a/src/barchart/horizontalbarchartitem.cpp b/src/barchart/horizontalbarchartitem.cpp index f37c5d9..d6f0943 100644 --- a/src/barchart/horizontalbarchartitem.cpp +++ b/src/barchart/horizontalbarchartitem.cpp @@ -1,16 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the Qt Commercial Charts Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** $QT_END_LICENSE$ +** +****************************************************************************/ + #include "horizontalbarchartitem_p.h" +#include "qabstractbarseries_p.h" +#include "qbarset_p.h" +#include "bar_p.h" +#include QTCOMMERCIALCHART_BEGIN_NAMESPACE -HorizontalBarChartitem::HorizontalBarChartitem(QAbstractBarSeries *series, ChartPresenter *presenter) : +HorizontalBarChartItem::HorizontalBarChartItem(QAbstractBarSeries *series, ChartPresenter *presenter) : AbstractBarChartItem(series, presenter) { } -QVector HorizontalBarChartitem::calculateLayout() +QVector HorizontalBarChartItem::calculateLayout() { - // TODO: QVector layout; + + // Use temporary qreals for accuracy + qreal categoryCount = m_series->d_func()->categoryCount(); + qreal setCount = m_series->count(); + bool barsVisible = m_series->isVisible(); + + // Domain: + qreal width = geometry().width(); + qreal height = geometry().height(); + qreal rangeY = m_domainMaxY - m_domainMinY; + qreal rangeX = m_domainMaxX - m_domainMinX; + qreal scaleY = (height / rangeY); + qreal scaleX = (width / rangeX); + qreal barHeight = (scaleY / setCount) * m_series->d_func()->barWidth(); // On horizontal chart barWidth of the barseries means height of the rect. + + int itemIndex(0); + for (int category = 0; category < categoryCount; category++) { + qreal xPos = scaleX * m_domainMinX + geometry().left(); + for (int set = 0; set < setCount; set++) { + QBarSetPrivate* barSet = m_series->d_func()->barsetAt(set)->d_ptr.data(); + + qreal yPos = m_rect.bottom() -(barSet->pos(category) + m_domainMinY + 1) * scaleY; + yPos += setCount*barHeight/2; + yPos -= set*barHeight; + + qreal barWidth = barSet->value(category) * scaleX; + Bar* bar = m_bars.at(itemIndex); + + QRectF rect(xPos, yPos - barHeight, barWidth, barHeight); + layout.append(rect); + bar->setPen(barSet->m_pen); + bar->setBrush(barSet->m_brush); + if (qFuzzyIsNull(barHeight)) { + bar->setVisible(false); + } else { + bar->setVisible(barsVisible); + } + + QGraphicsSimpleTextItem* label = m_labels.at(itemIndex); + + if (!qFuzzyIsNull(barSet->value(category))) { + label->setText(QString::number(barSet->value(category))); + } else { + label->setText(QString("")); + } + + label->setPos(xPos + (rect.width()/2 - label->boundingRect().width()/2) + ,yPos - barHeight/2 - label->boundingRect().height()/2); + label->setFont(barSet->m_labelFont); + label->setBrush(barSet->m_labelBrush); + + itemIndex++; + } + } return layout; } diff --git a/src/barchart/horizontalbarchartitem_p.h b/src/barchart/horizontalbarchartitem_p.h index e126779..3a4b2b1 100644 --- a/src/barchart/horizontalbarchartitem_p.h +++ b/src/barchart/horizontalbarchartitem_p.h @@ -1,3 +1,32 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the Qt Commercial Charts Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// W A R N I N G +// ------------- +// +// This file is not part of the QtCommercial Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. + #ifndef HORIZONTALBARCHARTITEM_H #define HORIZONTALBARCHARTITEM_H @@ -7,12 +36,11 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class HorizontalBarChartitem : public AbstractBarChartItem +class HorizontalBarChartItem : public AbstractBarChartItem { Q_OBJECT public: - HorizontalBarChartitem(QAbstractBarSeries *series, ChartPresenter *presenter); + HorizontalBarChartItem(QAbstractBarSeries *series, ChartPresenter *presenter); private: virtual QVector calculateLayout(); diff --git a/src/barchart/percentbarchartitem.cpp b/src/barchart/percentbarchartitem.cpp index 4c8efbe..ad26814 100644 --- a/src/barchart/percentbarchartitem.cpp +++ b/src/barchart/percentbarchartitem.cpp @@ -58,9 +58,9 @@ QVector PercentBarChartItem::calculateLayout() for (int set=0; set < setCount; set++) { QBarSetPrivate* barSet = m_series->d_func()->barsetAt(set)->d_ptr.data(); - qreal xPos = (barSet->at(category).x() - m_domainMinX) * scaleX + m_rect.left() - barWidth/2; + qreal xPos = (barSet->pos(category) - m_domainMinX) * scaleX + m_rect.left() - barWidth/2; - qreal barHeight = barSet->at(category).y() * percentage * scaleY; + qreal barHeight = barSet->value(category) * percentage * scaleY; Bar* bar = m_bars.at(itemIndex); bar->setPen(barSet->m_pen); bar->setBrush(barSet->m_brush); diff --git a/src/barchart/qabstractbarseries.cpp b/src/barchart/qabstractbarseries.cpp index 1317fce..56927c3 100644 --- a/src/barchart/qabstractbarseries.cpp +++ b/src/barchart/qabstractbarseries.cpp @@ -722,12 +722,12 @@ void QAbstractBarSeriesPrivate::initializeAxisY(QAbstractAxis* axis) QAbstractAxis::AxisType QAbstractBarSeriesPrivate::defaultAxisXType() const { - return QAbstractAxis::AxisTypeCategories; + return QAbstractAxis::AxisTypeNoAxis; } QAbstractAxis::AxisType QAbstractBarSeriesPrivate::defaultAxisYType() const { - return QAbstractAxis::AxisTypeValues; + return QAbstractAxis::AxisTypeNoAxis; } #include "moc_qabstractbarseries.cpp" diff --git a/src/barchart/qabstractbarseries.h b/src/barchart/qabstractbarseries.h index a8e3e65..06a390c 100644 --- a/src/barchart/qabstractbarseries.h +++ b/src/barchart/qabstractbarseries.h @@ -75,6 +75,7 @@ protected: friend class PercentBarChartItem; friend class StackedBarChartItem; friend class BarChartItem; + friend class HorizontalBarChartItem; }; QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/qbarseries.cpp b/src/barchart/qbarseries.cpp index f7502a3..c487021 100644 --- a/src/barchart/qbarseries.cpp +++ b/src/barchart/qbarseries.cpp @@ -113,6 +113,16 @@ Chart* QBarSeriesPrivate::createGraphics(ChartPresenter* presenter) return bar; } +QAbstractAxis::AxisType QBarSeriesPrivate::defaultAxisXType() const +{ + return QAbstractAxis::AxisTypeCategories; +} + +QAbstractAxis::AxisType QBarSeriesPrivate::defaultAxisYType() const +{ + return QAbstractAxis::AxisTypeValues; +} + #include "moc_qbarseries.cpp" QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/qbarseries.h b/src/barchart/qbarseries.h index d4c5b74..8435f07 100644 --- a/src/barchart/qbarseries.h +++ b/src/barchart/qbarseries.h @@ -21,7 +21,6 @@ #ifndef QBARSERIES_H #define QBARSERIES_H -#include #include QTCOMMERCIALCHART_BEGIN_NAMESPACE diff --git a/src/barchart/qbarseries_p.h b/src/barchart/qbarseries_p.h index 7c0f824..aed983c 100644 --- a/src/barchart/qbarseries_p.h +++ b/src/barchart/qbarseries_p.h @@ -43,6 +43,9 @@ public: Chart* createGraphics(ChartPresenter* presenter); void scaleDomain(Domain& domain); + QAbstractAxis::AxisType defaultAxisXType() const; + QAbstractAxis::AxisType defaultAxisYType() const; + private: Q_DECLARE_PUBLIC(QBarSeries) }; diff --git a/src/barchart/qbarset.cpp b/src/barchart/qbarset.cpp index a69ec96..dedc2b0 100644 --- a/src/barchart/qbarset.cpp +++ b/src/barchart/qbarset.cpp @@ -611,15 +611,23 @@ void QBarSetPrivate::replace(const int index, const QPointF value) emit updatedBars(); } -QPointF QBarSetPrivate::at(const int index) +qreal QBarSetPrivate::pos(const int index) { - if (index < 0 || index >= m_values.count()) { - return QPointF(0,0); - } + if (index < 0 || index >= m_values.count()) { + return 0; + } - return m_values.at(index); + return m_values.at(index).x(); } +qreal QBarSetPrivate::value(const int index) +{ + if (index < 0 || index >= m_values.count()) { + return 0; + } + + return m_values.at(index).y(); +} #include "moc_qbarset.cpp" #include "moc_qbarset_p.cpp" diff --git a/src/barchart/qbarset.h b/src/barchart/qbarset.h index ea43481..abcf12d 100644 --- a/src/barchart/qbarset.h +++ b/src/barchart/qbarset.h @@ -108,6 +108,7 @@ private: friend class StackedBarChartItem; friend class PercentBarChartItem; friend class BarChartItem; + friend class HorizontalBarChartItem; }; QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/qbarset_p.h b/src/barchart/qbarset_p.h index 6ff61b0..8fd8e3d 100644 --- a/src/barchart/qbarset_p.h +++ b/src/barchart/qbarset_p.h @@ -57,7 +57,8 @@ public: void replace(const int index, const qreal value); void replace(const int index, const QPointF value); - QPointF at(const int index); + qreal pos(const int index); + qreal value(const int index); Q_SIGNALS: void restructuredBars(); diff --git a/src/barchart/qhorizontalbarseries.cpp b/src/barchart/qhorizontalbarseries.cpp index c91defa..ed23b8a 100644 --- a/src/barchart/qhorizontalbarseries.cpp +++ b/src/barchart/qhorizontalbarseries.cpp @@ -1,9 +1,16 @@ #include "qhorizontalbarseries.h" #include "qhorizontalbarseries_p.h" +#include "horizontalbarchartitem_p.h" +#include "horizontalbaranimation_p.h" + +#include "chartdataset_p.h" +#include "charttheme_p.h" + + QTCOMMERCIALCHART_BEGIN_NAMESPACE QHorizontalBarSeries::QHorizontalBarSeries(QObject *parent) : - QAbstractBarSeries(parent) + QAbstractBarSeries(*new QHorizontalBarSeriesPrivate(this), parent) { } @@ -24,8 +31,6 @@ QHorizontalBarSeriesPrivate::QHorizontalBarSeriesPrivate(QHorizontalBarSeries *q void QHorizontalBarSeriesPrivate::scaleDomain(Domain& domain) { // TODO: - Q_UNUSED(domain); - /* qreal minX(domain.minX()); qreal minY(domain.minY()); qreal maxX(domain.maxX()); @@ -33,34 +38,39 @@ void QHorizontalBarSeriesPrivate::scaleDomain(Domain& domain) int tickXCount(domain.tickXCount()); int tickYCount(domain.tickYCount()); - qreal x = categoryCount(); - qreal y = max(); - minX = qMin(minX, -0.5); - minY = qMin(minY, y); - maxX = qMax(maxX, x - 0.5); - maxY = qMax(maxY, y); - tickXCount = x+1; + qreal y = categoryCount(); + qreal x = max(); + minX = qMin(minX, x); + minY = qMin(minY, -0.5); + maxX = qMax(maxX, x); + maxY = qMax(maxY, y -0.5); + tickYCount = y+1; domain.setRange(minX,maxX,minY,maxY,tickXCount,tickYCount); - */ } Chart* QHorizontalBarSeriesPrivate::createGraphics(ChartPresenter* presenter) { - // TODO: - Q_UNUSED(presenter); - return 0; -/* Q_Q(QHorizontalBarSeries); - GroupedBarChartItem* bar = new GroupedBarChartItem(q,presenter); + HorizontalBarChartItem* bar = new HorizontalBarChartItem(q,presenter); if(presenter->animationOptions().testFlag(QChart::SeriesAnimations)) { - presenter->animator()->addAnimation(bar); + bar->setAnimator(presenter->animator()); + bar->setAnimation(new HorizontalBarAnimation(bar)); } presenter->chartTheme()->decorate(q, presenter->dataSet()->seriesIndex(q)); return bar; -*/ +} + +QAbstractAxis::AxisType QHorizontalBarSeriesPrivate::defaultAxisXType() const +{ + return QAbstractAxis::AxisTypeValues; +} + +QAbstractAxis::AxisType QHorizontalBarSeriesPrivate::defaultAxisYType() const +{ + return QAbstractAxis::AxisTypeValues; } diff --git a/src/barchart/qhorizontalbarseries.h b/src/barchart/qhorizontalbarseries.h index fc1c4dc..7edcb2f 100644 --- a/src/barchart/qhorizontalbarseries.h +++ b/src/barchart/qhorizontalbarseries.h @@ -1,3 +1,23 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the Qt Commercial Charts Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** $QT_END_LICENSE$ +** +****************************************************************************/ + #ifndef QHORIZONTALBARSERIES_H #define QHORIZONTALBARSERIES_H diff --git a/src/barchart/qhorizontalbarseries_p.h b/src/barchart/qhorizontalbarseries_p.h index 4f0f9d3..45b7402 100644 --- a/src/barchart/qhorizontalbarseries_p.h +++ b/src/barchart/qhorizontalbarseries_p.h @@ -41,6 +41,8 @@ public: QHorizontalBarSeriesPrivate(QHorizontalBarSeries* q); Chart* createGraphics(ChartPresenter* presenter); void scaleDomain(Domain& domain); + QAbstractAxis::AxisType defaultAxisXType() const; + QAbstractAxis::AxisType defaultAxisYType() const; private: Q_DECLARE_PUBLIC(QHorizontalBarSeries) diff --git a/src/barchart/qpercentbarseries.cpp b/src/barchart/qpercentbarseries.cpp index 12421cd..85248c9 100644 --- a/src/barchart/qpercentbarseries.cpp +++ b/src/barchart/qpercentbarseries.cpp @@ -112,6 +112,16 @@ Chart* QPercentBarSeriesPrivate::createGraphics(ChartPresenter* presenter) return bar; } +QAbstractAxis::AxisType QPercentBarSeriesPrivate::defaultAxisXType() const +{ + return QAbstractAxis::AxisTypeCategories; +} + +QAbstractAxis::AxisType QPercentBarSeriesPrivate::defaultAxisYType() const +{ + return QAbstractAxis::AxisTypeValues; +} + #include "moc_qpercentbarseries.cpp" QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/qpercentbarseries_p.h b/src/barchart/qpercentbarseries_p.h index 88ba693..671b87e 100644 --- a/src/barchart/qpercentbarseries_p.h +++ b/src/barchart/qpercentbarseries_p.h @@ -42,6 +42,9 @@ public: QPercentBarSeriesPrivate(QPercentBarSeries* q); void scaleDomain(Domain& domain); Chart* createGraphics(ChartPresenter* presenter); + QAbstractAxis::AxisType defaultAxisXType() const; + QAbstractAxis::AxisType defaultAxisYType() const; + private: Q_DECLARE_PUBLIC(QPercentBarSeries) }; diff --git a/src/barchart/qstackedbarseries.cpp b/src/barchart/qstackedbarseries.cpp index 75922b1..caa2c8b 100644 --- a/src/barchart/qstackedbarseries.cpp +++ b/src/barchart/qstackedbarseries.cpp @@ -114,6 +114,16 @@ Chart* QStackedBarSeriesPrivate::createGraphics(ChartPresenter* presenter) return bar; } +QAbstractAxis::AxisType QStackedBarSeriesPrivate::defaultAxisXType() const +{ + return QAbstractAxis::AxisTypeCategories; +} + +QAbstractAxis::AxisType QStackedBarSeriesPrivate::defaultAxisYType() const +{ + return QAbstractAxis::AxisTypeValues; +} + #include "moc_qstackedbarseries.cpp" diff --git a/src/barchart/qstackedbarseries_p.h b/src/barchart/qstackedbarseries_p.h index 950d7b9..fafb251 100644 --- a/src/barchart/qstackedbarseries_p.h +++ b/src/barchart/qstackedbarseries_p.h @@ -42,6 +42,8 @@ public: QStackedBarSeriesPrivate(QStackedBarSeries* q); Chart* createGraphics(ChartPresenter* presenter); void scaleDomain(Domain& domain); + QAbstractAxis::AxisType defaultAxisXType() const; + QAbstractAxis::AxisType defaultAxisYType() const; private: Q_DECLARE_PUBLIC(QStackedBarSeries) diff --git a/src/barchart/stackedbarchartitem.cpp b/src/barchart/stackedbarchartitem.cpp index 8168f36..ab1095f 100644 --- a/src/barchart/stackedbarchartitem.cpp +++ b/src/barchart/stackedbarchartitem.cpp @@ -55,9 +55,9 @@ QVector StackedBarChartItem::calculateLayout() for (int set=0; set < setCount; set++) { QBarSetPrivate* barSet = m_series->d_func()->barsetAt(set)->d_ptr.data(); - qreal xPos = (barSet->at(category).x() - m_domainMinX) * scaleX + m_rect.left() - barWidth/2; + qreal xPos = (barSet->pos(category) - m_domainMinX) * scaleX + m_rect.left() - barWidth/2; - qreal barHeight = barSet->at(category).y() * scaleY; + qreal barHeight = barSet->value(category) * scaleY; Bar* bar = m_bars.at(itemIndex); bar->setPen(barSet->m_pen); bar->setBrush(barSet->m_brush); @@ -72,8 +72,8 @@ QVector StackedBarChartItem::calculateLayout() QGraphicsSimpleTextItem* label = m_labels.at(itemIndex); - if (!qFuzzyIsNull(barSet->at(category).y())) { - label->setText(QString::number(barSet->at(category).y())); + if (!qFuzzyIsNull(barSet->value(category))) { + label->setText(QString::number(barSet->value(category))); } else { label->setText(QString("")); }