##// END OF EJS Templates
barchart separators fixed, layout fixed
sauimone -
r505:ffc461f7ce12
parent child
Show More
@@ -49,13 +49,14 int main(int argc, char *argv[])
49 //! [4]
49 //! [4]
50 // Enable tooltip
50 // Enable tooltip
51 series->setToolTipEnabled();
51 series->setToolTipEnabled();
52 series->setSeparatorsVisible(true);
52
53
53 // Connect clicked signal of set to toggle floating values of set.
54 // Connect clicked signal of set to toggle floating values of set.
54 // Note that we leave QBarset "Zak" unconnected here, so clicking on it doesn't toggle values.
55 QObject::connect(set0,SIGNAL(clicked(QString)),set0,SIGNAL(toggleFloatingValues()));
55 QObject::connect(set0,SIGNAL(clicked(QString)),set0,SIGNAL(toggleFloatingValues()));
56 QObject::connect(set1,SIGNAL(clicked(QString)),set1,SIGNAL(toggleFloatingValues()));
56 QObject::connect(set1,SIGNAL(clicked(QString)),set1,SIGNAL(toggleFloatingValues()));
57 QObject::connect(set2,SIGNAL(clicked(QString)),set2,SIGNAL(toggleFloatingValues()));
57 QObject::connect(set2,SIGNAL(clicked(QString)),set2,SIGNAL(toggleFloatingValues()));
58 QObject::connect(set3,SIGNAL(clicked(QString)),set3,SIGNAL(toggleFloatingValues()));
58 QObject::connect(set3,SIGNAL(clicked(QString)),set3,SIGNAL(toggleFloatingValues()));
59 QObject::connect(set4,SIGNAL(clicked(QString)),set4,SIGNAL(toggleFloatingValues()));
59 //! [4]
60 //! [4]
60
61
61 //! [5]
62 //! [5]
@@ -68,9 +69,7 int main(int argc, char *argv[])
68 //! [5]
69 //! [5]
69
70
70 //! [6]
71 //! [6]
71 chartView->axisX()->setAxisVisible(false);
72 chartView->axisX()->setGridVisible(false);
72 chartView->axisX()->setGridVisible(false);
73 chartView->axisX()->setLabelsVisible(false);
74 //! [6]
73 //! [6]
75
74
76 window.setCentralWidget(chartView);
75 window.setCentralWidget(chartView);
@@ -50,11 +50,11 int main(int argc, char *argv[])
50 series->setToolTipEnabled();
50 series->setToolTipEnabled();
51
51
52 // Connect clicked signal of set to toggle floating values of set.
52 // Connect clicked signal of set to toggle floating values of set.
53 // Note that we leave QBarset "Zak" unconnected here, so clicking on it doesn't toggle values.
54 QObject::connect(set0,SIGNAL(clicked(QString)),set0,SIGNAL(toggleFloatingValues()));
53 QObject::connect(set0,SIGNAL(clicked(QString)),set0,SIGNAL(toggleFloatingValues()));
55 QObject::connect(set1,SIGNAL(clicked(QString)),set1,SIGNAL(toggleFloatingValues()));
54 QObject::connect(set1,SIGNAL(clicked(QString)),set1,SIGNAL(toggleFloatingValues()));
56 QObject::connect(set2,SIGNAL(clicked(QString)),set2,SIGNAL(toggleFloatingValues()));
55 QObject::connect(set2,SIGNAL(clicked(QString)),set2,SIGNAL(toggleFloatingValues()));
57 QObject::connect(set3,SIGNAL(clicked(QString)),set3,SIGNAL(toggleFloatingValues()));
56 QObject::connect(set3,SIGNAL(clicked(QString)),set3,SIGNAL(toggleFloatingValues()));
57 QObject::connect(set4,SIGNAL(clicked(QString)),set4,SIGNAL(toggleFloatingValues()));
58 //! [4]
58 //! [4]
59
59
60 //! [5]
60 //! [5]
@@ -67,9 +67,7 int main(int argc, char *argv[])
67 //! [5]
67 //! [5]
68
68
69 //! [6]
69 //! [6]
70 chartView->axisX()->setAxisVisible(false);
71 chartView->axisX()->setGridVisible(false);
70 chartView->axisX()->setGridVisible(false);
72 chartView->axisX()->setLabelsVisible(false);
73 //! [6]
71 //! [6]
74
72
75 window.setCentralWidget(chartView);
73 window.setCentralWidget(chartView);
@@ -1,6 +1,7
1 #include "barpresenter_p.h"
1 #include "barpresenter_p.h"
2 #include "bar_p.h"
2 #include "bar_p.h"
3 #include "barvalue_p.h"
3 #include "barvalue_p.h"
4 #include "separator_p.h"
4 #include "qbarset.h"
5 #include "qbarset.h"
5 #include <QDebug>
6 #include <QDebug>
6
7
@@ -34,12 +35,12 void BarPresenter::layoutChanged()
34 qreal tM = mSeries->max();
35 qreal tM = mSeries->max();
35 qreal scale = (tH/tM);
36 qreal scale = (tH/tM);
36 qreal tC = categoryCount + 1;
37 qreal tC = categoryCount + 1;
37 mBarWidth = tW / ((categoryCount * setCount) + tC);
38 qreal categoryWidth = tW/tC;
38 qreal xStepPerCategory = (tW/tC) + mBarWidth;
39 mBarWidth = categoryWidth / (setCount+1);
39
40
40 int itemIndex(0);
41 int itemIndex(0);
41 for (int category=0; category < categoryCount; category++) {
42 for (int category=0; category < categoryCount; category++) {
42 qreal xPos = xStepPerCategory * category;
43 qreal xPos = categoryWidth * category + categoryWidth /2;
43 qreal yPos = mHeight;
44 qreal yPos = mHeight;
44 for (int set = 0; set < setCount; set++) {
45 for (int set = 0; set < setCount; set++) {
45 qreal barHeight = mSeries->valueAt(set,category) * scale;
46 qreal barHeight = mSeries->valueAt(set,category) * scale;
@@ -54,10 +55,19 void BarPresenter::layoutChanged()
54 }
55 }
55 }
56 }
56
57
58 // Position separators
59 qreal xPos = categoryWidth + categoryWidth/2 - mBarWidth /2;
60 for (int s=0; s < mSeparators.count(); s++) {
61 Separator* sep = mSeparators.at(s);
62 sep->setPos(xPos,0);
63 sep->setSize(QSizeF(1,mHeight));
64 xPos += categoryWidth;
65 }
66
57 // Position floating values
67 // Position floating values
58 itemIndex = 0;
68 itemIndex = 0;
59 for (int category=0; category < mSeries->categoryCount(); category++) {
69 for (int category=0; category < mSeries->categoryCount(); category++) {
60 qreal xPos = xStepPerCategory * category + mBarWidth/2;
70 qreal xPos = categoryWidth * category + categoryWidth/2 + mBarWidth/2;
61 qreal yPos = mHeight;
71 qreal yPos = mHeight;
62 for (int set=0; set < mSeries->barsetCount(); set++) {
72 for (int set=0; set < mSeries->barsetCount(); set++) {
63 qreal barHeight = mSeries->valueAt(set,category) * scale;
73 qreal barHeight = mSeries->valueAt(set,category) * scale;
@@ -15,11 +15,12 QTCOMMERCIALCHART_BEGIN_NAMESPACE
15 BarPresenterBase::BarPresenterBase(QBarSeries *series, QChart *parent)
15 BarPresenterBase::BarPresenterBase(QBarSeries *series, QChart *parent)
16 : ChartItem(parent)
16 : ChartItem(parent)
17 ,mLayoutSet(false)
17 ,mLayoutSet(false)
18 ,mSeparatorsEnabled(false)
19 ,mSeries(series)
18 ,mSeries(series)
20 ,mChart(parent)
19 ,mChart(parent)
21 {
20 {
22 connect(series,SIGNAL(showToolTip(QPoint,QString)),this,SLOT(showToolTip(QPoint,QString)));
21 connect(series,SIGNAL(showToolTip(QPoint,QString)),this,SLOT(showToolTip(QPoint,QString)));
22 connect(series,SIGNAL(enableSeparators(bool)),this,SLOT(enableSeparators(bool)));
23 enableSeparators(series->separatorsVisible());
23 initAxisLabels();
24 initAxisLabels();
24 dataChanged();
25 dataChanged();
25 }
26 }
@@ -27,6 +28,7 BarPresenterBase::BarPresenterBase(QBarSeries *series, QChart *parent)
27 BarPresenterBase::~BarPresenterBase()
28 BarPresenterBase::~BarPresenterBase()
28 {
29 {
29 disconnect(this,SLOT(showToolTip(QPoint,QString)));
30 disconnect(this,SLOT(showToolTip(QPoint,QString)));
31 disconnect(this,SLOT(enableSeparators(bool)));
30 }
32 }
31
33
32 void BarPresenterBase::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
34 void BarPresenterBase::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
@@ -77,7 +79,7 void BarPresenterBase::dataChanged()
77 for (int i=0; i<count; i++) {
79 for (int i=0; i<count; i++) {
78 Separator* sep = new Separator(this);
80 Separator* sep = new Separator(this);
79 sep->setColor(QColor(255,0,0,255)); // TODO: color for separations from theme
81 sep->setColor(QColor(255,0,0,255)); // TODO: color for separations from theme
80 sep->setVisible(mSeparatorsEnabled);
82 sep->setVisible(mSeries->separatorsVisible());
81 childItems().append(sep);
83 childItems().append(sep);
82 mSeparators.append(sep);
84 mSeparators.append(sep);
83 }
85 }
@@ -170,7 +172,6 void BarPresenterBase::enableSeparators(bool enabled)
170 for (int i=0; i<mSeparators.count(); i++) {
172 for (int i=0; i<mSeparators.count(); i++) {
171 mSeparators.at(i)->setVisible(enabled);
173 mSeparators.at(i)->setVisible(enabled);
172 }
174 }
173 mSeparatorsEnabled = enabled;
174 }
175 }
175
176
176 #include "moc_barpresenterbase_p.cpp"
177 #include "moc_barpresenterbase_p.cpp"
@@ -53,7 +53,6 protected:
53 qreal mBarWidth;
53 qreal mBarWidth;
54
54
55 bool mLayoutSet; // True, if component has been laid out.
55 bool mLayoutSet; // True, if component has been laid out.
56 bool mSeparatorsEnabled;
57
56
58 // Not owned.
57 // Not owned.
59 QBarSeries* mSeries;
58 QBarSeries* mSeries;
@@ -137,10 +137,10 void QBarSeries::setToolTipEnabled(bool enabled)
137 Separators are visual elements that are drawn between categories.
137 Separators are visual elements that are drawn between categories.
138 Calling without parameter \a enabled, enables the separators
138 Calling without parameter \a enabled, enables the separators
139 */
139 */
140 void QBarSeries::setSeparatorsEnabled(bool enabled)
140 void QBarSeries::setSeparatorsVisible(bool visible)
141 {
141 {
142 // TODO: toggle
142 mSeparatorsVisible = visible;
143 // emit separatorsEnabled(enabled);
143 emit enableSeparators(visible);
144 }
144 }
145
145
146
146
@@ -217,6 +217,11 BarChartModel& QBarSeries::model()
217 return *mModel;
217 return *mModel;
218 }
218 }
219
219
220 bool QBarSeries::separatorsVisible()
221 {
222 return mSeparatorsVisible;
223 }
224
220 #include "moc_qbarseries.cpp"
225 #include "moc_qbarseries.cpp"
221
226
222 QTCOMMERCIALCHART_END_NAMESPACE
227 QTCOMMERCIALCHART_END_NAMESPACE
@@ -39,6 +39,7 public:
39 qreal categorySum(int category);
39 qreal categorySum(int category);
40 qreal maxCategorySum();
40 qreal maxCategorySum();
41 BarChartModel& model();
41 BarChartModel& model();
42 bool separatorsVisible();
42 // <--- TO PIMPL
43 // <--- TO PIMPL
43
44
44 signals:
45 signals:
@@ -48,12 +49,13 signals:
48
49
49 // TODO: internal signals, these to private implementation.
50 // TODO: internal signals, these to private implementation.
50 // TODO: TO PIMPL --->
51 // TODO: TO PIMPL --->
52 void enableSeparators(bool enable);
51 void showToolTip(QPoint pos, QString tip);
53 void showToolTip(QPoint pos, QString tip);
52 // <--- TO PIMPL
54 // <--- TO PIMPL
53
55
54 public Q_SLOTS:
56 public Q_SLOTS:
55 void setToolTipEnabled(bool enabled=true); // enables tooltips
57 void setToolTipEnabled(bool enabled=true); // enables tooltips
56 void setSeparatorsEnabled(bool enabled=true); // enables separators between categories
58 void setSeparatorsVisible(bool visible=true); // enables separators between categories
57
59
58 // TODO: TO PIMPL --->
60 // TODO: TO PIMPL --->
59 void barsetClicked(QString category);
61 void barsetClicked(QString category);
@@ -62,6 +64,7 public Q_SLOTS:
62
64
63 protected:
65 protected:
64 BarChartModel* mModel;
66 BarChartModel* mModel;
67 bool mSeparatorsVisible;
65 };
68 };
66
69
67 QTCOMMERCIALCHART_END_NAMESPACE
70 QTCOMMERCIALCHART_END_NAMESPACE
@@ -272,7 +272,7 void MainWidget::addSeries(QString seriesName, int columnCount, int rowCount, QS
272 // TODO: new implementation of setFloatingValuesEnabled with signals
272 // TODO: new implementation of setFloatingValuesEnabled with signals
273 //series->setFloatingValuesEnabled(true);
273 //series->setFloatingValuesEnabled(true);
274 series->setToolTipEnabled(true);
274 series->setToolTipEnabled(true);
275 series->setSeparatorsEnabled(false);
275 series->setSeparatorsVisible(false);
276 m_chartView->addSeries(series);
276 m_chartView->addSeries(series);
277 setCurrentSeries(series);
277 setCurrentSeries(series);
278 } else if (seriesName == "Spline") {
278 } else if (seriesName == "Spline") {
General Comments 0
You need to be logged in to leave comments. Login now