summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTitta Heikkala <titta.heikkala@theqtcompany.com>2015-08-13 10:46:50 +0300
committerTitta Heikkala <titta.heikkala@theqtcompany.com>2015-09-07 07:56:05 +0000
commitdab4dfead39d02e711a9f2b5bfd7a42b30125fba (patch)
tree653b26cf1beaaa3aedc287ca8c41fd3f1968c0f5
parent05fa3caa787974595a2692f708a75813a515adda (diff)
Added minor ticks to value axis
Added possibility to set minor tick for value axis. By default the count of minor ticks is zero. The arrow of minor ticks follows the color and pen of the arrows of the major ticks as it's part of axis. Change-Id: I8a422caaeedcd18ee6144e8636e3903d16f0632c Task-number: QTRD-3294 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>
-rw-r--r--src/charts/axis/cartesianchartaxis.cpp43
-rw-r--r--src/charts/axis/cartesianchartaxis_p.h3
-rw-r--r--src/charts/axis/chartaxiselement.cpp27
-rw-r--r--src/charts/axis/chartaxiselement_p.h11
-rw-r--r--src/charts/axis/horizontalaxis.cpp50
-rw-r--r--src/charts/axis/polarchartaxis.cpp3
-rw-r--r--src/charts/axis/polarchartaxis_p.h1
-rw-r--r--src/charts/axis/polarchartaxisangular.cpp75
-rw-r--r--src/charts/axis/polarchartaxisangular_p.h3
-rw-r--r--src/charts/axis/polarchartaxisradial.cpp74
-rw-r--r--src/charts/axis/polarchartaxisradial_p.h3
-rw-r--r--src/charts/axis/qabstractaxis.cpp61
-rw-r--r--src/charts/axis/qabstractaxis.h8
-rw-r--r--src/charts/axis/qabstractaxis_p.h2
-rw-r--r--src/charts/axis/valueaxis/chartvalueaxisx.cpp10
-rw-r--r--src/charts/axis/valueaxis/chartvalueaxisx_p.h1
-rw-r--r--src/charts/axis/valueaxis/chartvalueaxisy.cpp10
-rw-r--r--src/charts/axis/valueaxis/chartvalueaxisy_p.h1
-rw-r--r--src/charts/axis/valueaxis/polarchartvalueaxisangular.cpp10
-rw-r--r--src/charts/axis/valueaxis/polarchartvalueaxisangular_p.h2
-rw-r--r--src/charts/axis/valueaxis/polarchartvalueaxisradial.cpp10
-rw-r--r--src/charts/axis/valueaxis/polarchartvalueaxisradial_p.h1
-rw-r--r--src/charts/axis/valueaxis/qvalueaxis.cpp46
-rw-r--r--src/charts/axis/valueaxis/qvalueaxis.h4
-rw-r--r--src/charts/axis/valueaxis/qvalueaxis_p.h1
-rw-r--r--src/charts/axis/verticalaxis.cpp50
-rw-r--r--src/charts/themes/charttheme_p.h2
-rw-r--r--src/charts/themes/chartthemebluecerulean_p.h3
-rw-r--r--src/charts/themes/chartthemeblueicy_p.h3
-rw-r--r--src/charts/themes/chartthemebluencs_p.h3
-rw-r--r--src/charts/themes/chartthemebrownsand_p.h3
-rw-r--r--src/charts/themes/chartthemedark_p.h3
-rw-r--r--src/charts/themes/chartthemehighcontrast_p.h3
-rw-r--r--src/charts/themes/chartthemelight_p.h3
-rw-r--r--src/charts/themes/chartthemeqt_p.h3
-rw-r--r--src/charts/themes/chartthemesystem_p.h12
-rw-r--r--tests/auto/qabstractaxis/tst_qabstractaxis.cpp121
-rw-r--r--tests/auto/qabstractaxis/tst_qabstractaxis.h4
-rw-r--r--tests/manual/chartviewer/window.cpp81
-rw-r--r--tests/manual/chartviewer/window.h9
-rw-r--r--tests/manual/polarcharttest/mainwindow.cpp58
-rw-r--r--tests/manual/polarcharttest/mainwindow.h8
-rw-r--r--tests/manual/polarcharttest/mainwindow.ui1000
-rw-r--r--tests/manual/qmlchartproperties/qml/qmlchartproperties/ChartEditorAxis.qml13
44 files changed, 1303 insertions, 539 deletions
diff --git a/src/charts/axis/cartesianchartaxis.cpp b/src/charts/axis/cartesianchartaxis.cpp
index 8e71d60e..374d846a 100644
--- a/src/charts/axis/cartesianchartaxis.cpp
+++ b/src/charts/axis/cartesianchartaxis.cpp
@@ -89,6 +89,35 @@ void CartesianChartAxis::createItems(int count)
}
}
+void CartesianChartAxis::updateMinorTickItems()
+{
+ QValueAxis *valueAxis = qobject_cast<QValueAxis *>(this->axis());
+ if (valueAxis) {
+ int currentCount = minorArrowItems().size();
+ int expectedCount = valueAxis->minorTickCount() * (valueAxis->tickCount() - 1);
+ int diff = expectedCount - currentCount;
+ if (diff > 0) {
+ for (int i = 0; i < diff; i++) {
+ QGraphicsLineItem *minorArrow = new QGraphicsLineItem(this);
+ QGraphicsLineItem *minorGrid = new QGraphicsLineItem(this);
+ minorArrow->setPen(valueAxis->linePen());
+ minorGrid->setPen(valueAxis->minorGridLinePen());
+ minorArrowGroup()->addToGroup(minorArrow);
+ minorGridGroup()->addToGroup(minorGrid);
+ }
+ } else {
+ QList<QGraphicsItem *> minorGridLines = minorGridItems();
+ QList<QGraphicsItem *> minorArrows = minorArrowItems();
+ for (int i = 0; i > diff; i--) {
+ if (!minorGridLines.isEmpty())
+ delete(minorGridLines.takeLast());
+ if (!minorArrows.isEmpty())
+ delete(minorArrows.takeLast());
+ }
+ }
+ }
+}
+
void CartesianChartAxis::deleteItems(int count)
{
QList<QGraphicsItem *> lines = gridItems();
@@ -114,6 +143,8 @@ void CartesianChartAxis::updateLayout(QVector<qreal> &layout)
else if (diff < 0)
createItems(-diff);
+ updateMinorTickItems();
+
if (animation()) {
switch (presenter()->state()) {
case ChartPresenter::ZoomInState:
@@ -182,6 +213,18 @@ void CartesianChartAxis::handleGridPenChanged(const QPen &pen)
static_cast<QGraphicsLineItem *>(item)->setPen(pen);
}
+void CartesianChartAxis::handleMinorArrowPenChanged(const QPen &pen)
+{
+ foreach (QGraphicsItem *item, minorArrowItems())
+ static_cast<QGraphicsLineItem *>(item)->setPen(pen);
+}
+
+void CartesianChartAxis::handleMinorGridPenChanged(const QPen &pen)
+{
+ foreach (QGraphicsItem *item, minorGridItems())
+ static_cast<QGraphicsLineItem *>(item)->setPen(pen);
+}
+
void CartesianChartAxis::handleShadesBrushChanged(const QBrush &brush)
{
foreach (QGraphicsItem *item, shadeItems())
diff --git a/src/charts/axis/cartesianchartaxis_p.h b/src/charts/axis/cartesianchartaxis_p.h
index e945936a..c59443ae 100644
--- a/src/charts/axis/cartesianchartaxis_p.h
+++ b/src/charts/axis/cartesianchartaxis_p.h
@@ -60,10 +60,13 @@ public Q_SLOTS:
virtual void handleGridPenChanged(const QPen &pen);
virtual void handleShadesBrushChanged(const QBrush &brush);
virtual void handleShadesPenChanged(const QPen &pen);
+ virtual void handleMinorArrowPenChanged(const QPen &pen);
+ virtual void handleMinorGridPenChanged(const QPen &pen);
private:
void createItems(int count);
void deleteItems(int count);
+ void updateMinorTickItems();
private:
QRectF m_gridRect;
diff --git a/src/charts/axis/chartaxiselement.cpp b/src/charts/axis/chartaxiselement.cpp
index 90cce21b..1667f0c7 100644
--- a/src/charts/axis/chartaxiselement.cpp
+++ b/src/charts/axis/chartaxiselement.cpp
@@ -48,6 +48,8 @@ ChartAxisElement::ChartAxisElement(QAbstractAxis *axis, QGraphicsItem *item, boo
m_animation(0),
m_grid(new QGraphicsItemGroup(item)),
m_arrow(new QGraphicsItemGroup(item)),
+ m_minorGrid(new QGraphicsItemGroup(item)),
+ m_minorArrow(new QGraphicsItemGroup(item)),
m_shades(new QGraphicsItemGroup(item)),
m_labels(new QGraphicsItemGroup(item)),
m_title(new QGraphicsTextItem(item)),
@@ -57,9 +59,12 @@ ChartAxisElement::ChartAxisElement(QAbstractAxis *axis, QGraphicsItem *item, boo
//initial initialization
m_arrow->setHandlesChildEvents(false);
m_arrow->setZValue(ChartPresenter::AxisZValue);
+ m_minorArrow->setHandlesChildEvents(false);
+ m_minorArrow->setZValue(ChartPresenter::AxisZValue);
m_labels->setZValue(ChartPresenter::AxisZValue);
m_shades->setZValue(ChartPresenter::ShadesZValue);
m_grid->setZValue(ChartPresenter::GridZValue);
+ m_minorGrid->setZValue(ChartPresenter::GridZValue);
m_title->setZValue(ChartPresenter::GridZValue);
m_title->document()->setDocumentMargin(ChartPresenter::textMargin());
handleVisibleChanged(axis->isVisible());
@@ -92,6 +97,14 @@ void ChartAxisElement::connectSlots()
QObject::connect(axis(), SIGNAL(titleVisibleChanged(bool)), this, SLOT(handleTitleVisibleChanged(bool)));
QObject::connect(axis()->d_ptr.data(), SIGNAL(rangeChanged(qreal, qreal)), this, SLOT(handleRangeChanged(qreal, qreal)));
QObject::connect(axis(), SIGNAL(reverseChanged(bool)), this, SLOT(handleReverseChanged(bool)));
+ QObject::connect(axis(), SIGNAL(lineVisibleChanged(bool)),
+ this, SLOT(handleMinorArrowVisibleChanged(bool)));
+ QObject::connect(axis(), SIGNAL(linePenChanged(const QPen&)), this,
+ SLOT(handleMinorArrowPenChanged(const QPen&)));
+ QObject::connect(axis(), SIGNAL(minorGridVisibleChanged(bool)),
+ this, SLOT(handleMinorGridVisibleChanged(bool)));
+ QObject::connect(axis(), SIGNAL(minorGridLinePenChanged(const QPen&)),
+ this, SLOT(handleMinorGridPenChanged(const QPen&)));
}
void ChartAxisElement::handleArrowVisibleChanged(bool visible)
@@ -99,11 +112,21 @@ void ChartAxisElement::handleArrowVisibleChanged(bool visible)
m_arrow->setVisible(visible);
}
+void ChartAxisElement::handleMinorArrowVisibleChanged(bool visible)
+{
+ m_minorArrow->setVisible(visible);
+}
+
void ChartAxisElement::handleGridVisibleChanged(bool visible)
{
m_grid->setVisible(visible);
}
+void ChartAxisElement::handleMinorGridVisibleChanged(bool visible)
+{
+ m_minorGrid->setVisible(visible);
+}
+
void ChartAxisElement::handleLabelsVisibleChanged(bool visible)
{
QGraphicsLayoutItem::updateGeometry();
@@ -174,12 +197,16 @@ void ChartAxisElement::handleVisibleChanged(bool visible)
if (!visible) {
m_grid->setVisible(visible);
m_arrow->setVisible(visible);
+ m_minorGrid->setVisible(visible);
+ m_minorArrow->setVisible(visible);
m_shades->setVisible(visible);
m_labels->setVisible(visible);
m_title->setVisible(visible);
} else {
m_grid->setVisible(axis()->isGridLineVisible());
m_arrow->setVisible(axis()->isLineVisible());
+ m_minorGrid->setVisible(axis()->isMinorGridLineVisible());
+ m_minorArrow->setVisible(axis()->isLineVisible());
m_shades->setVisible(axis()->shadesVisible());
m_labels->setVisible(axis()->labelsVisible());
m_title->setVisible(axis()->isTitleVisible());
diff --git a/src/charts/axis/chartaxiselement_p.h b/src/charts/axis/chartaxiselement_p.h
index f1acf636..3ca2797b 100644
--- a/src/charts/axis/chartaxiselement_p.h
+++ b/src/charts/axis/chartaxiselement_p.h
@@ -96,14 +96,18 @@ protected:
virtual void updateLayout(QVector<qreal> &layout) = 0;
QList<QGraphicsItem *> gridItems() { return m_grid->childItems(); }
+ QList<QGraphicsItem *> minorGridItems() { return m_minorGrid->childItems(); }
QList<QGraphicsItem *> labelItems() { return m_labels->childItems(); }
QList<QGraphicsItem *> shadeItems() { return m_shades->childItems(); }
QList<QGraphicsItem *> arrowItems() { return m_arrow->childItems(); }
+ QList<QGraphicsItem *> minorArrowItems() { return m_minorArrow->childItems(); }
QGraphicsTextItem *titleItem() const { return m_title.data(); }
QGraphicsItemGroup *gridGroup() { return m_grid.data(); }
+ QGraphicsItemGroup *minorGridGroup() { return m_minorGrid.data(); }
QGraphicsItemGroup *labelGroup() { return m_labels.data(); }
QGraphicsItemGroup *shadeGroup() { return m_shades.data(); }
QGraphicsItemGroup *arrowGroup() { return m_arrow.data(); }
+ QGraphicsItemGroup *minorArrowGroup() { return m_minorArrow.data(); }
public Q_SLOTS:
void handleVisibleChanged(bool visible);
@@ -116,6 +120,8 @@ public Q_SLOTS:
virtual void handleShadesPenChanged(const QPen &pen) = 0;
virtual void handleArrowPenChanged(const QPen &pen) = 0;
virtual void handleGridPenChanged(const QPen &pen) = 0;
+ virtual void handleMinorArrowPenChanged(const QPen &pen) = 0;
+ virtual void handleMinorGridPenChanged(const QPen &pen) = 0;
void handleLabelsBrushChanged(const QBrush &brush);
void handleLabelsFontChanged(const QFont &font);
void handleTitleBrushChanged(const QBrush &brush);
@@ -124,6 +130,9 @@ public Q_SLOTS:
void handleTitleVisibleChanged(bool visible);
void handleRangeChanged(qreal min, qreal max);
void handleReverseChanged(bool reverse);
+ void handleMinorArrowVisibleChanged(bool visible);
+ void handleMinorGridVisibleChanged(bool visible);
+
Q_SIGNALS:
void clicked();
@@ -141,6 +150,8 @@ private:
QRectF m_axisRect;
QScopedPointer<QGraphicsItemGroup> m_grid;
QScopedPointer<QGraphicsItemGroup> m_arrow;
+ QScopedPointer<QGraphicsItemGroup> m_minorGrid;
+ QScopedPointer<QGraphicsItemGroup> m_minorArrow;
QScopedPointer<QGraphicsItemGroup> m_shades;
QScopedPointer<QGraphicsItemGroup> m_labels;
QScopedPointer<QGraphicsTextItem> m_title;
diff --git a/src/charts/axis/horizontalaxis.cpp b/src/charts/axis/horizontalaxis.cpp
index 875bf479..fa4b0382 100644
--- a/src/charts/axis/horizontalaxis.cpp
+++ b/src/charts/axis/horizontalaxis.cpp
@@ -94,6 +94,8 @@ void HorizontalAxis::updateGeometry()
QList<QGraphicsItem *> lines = gridItems();
QList<QGraphicsItem *> shades = shadeItems();
+ QList<QGraphicsItem *> minorLines = minorGridItems();
+ QList<QGraphicsItem *> minorArrows = minorArrowItems();
for (int i = 0; i < layout.size(); ++i) {
//items
@@ -279,6 +281,54 @@ void HorizontalAxis::updateGeometry()
tickItem->setVisible(true);
}
+ // add minor ticks
+ QValueAxis *valueAxis = qobject_cast<QValueAxis *>(axis());
+ if ((i + 1) != layout.size() && valueAxis) {
+ int minorTickCount = valueAxis->minorTickCount();
+ if (minorTickCount != 0) {
+ qreal minorTickDistance = (layout[i] - layout[i + 1]) / qreal(minorTickCount + 1);
+ for (int j = 0; j < minorTickCount; j++) {
+ QGraphicsLineItem *minorGridItem =
+ static_cast<QGraphicsLineItem *>(minorLines.at(i * minorTickCount + j));
+ QGraphicsLineItem *minorArrowItem =
+ static_cast<QGraphicsLineItem *>(minorArrows.at(i * minorTickCount + j));
+ if (i == 0) {
+ minorGridItem->setLine(gridRect.left() - minorTickDistance * qreal(j + 1),
+ gridRect.top(),
+ gridRect.left() - minorTickDistance * qreal(j + 1),
+ gridRect.bottom());
+ } else {
+ minorGridItem->setLine(gridItem->line().p1().x()
+ - minorTickDistance * qreal(j + 1),
+ gridRect.top(),
+ gridItem->line().p1().x()
+ - minorTickDistance * qreal(j + 1),
+ gridRect.bottom());
+ }
+ if (axis()->alignment() == Qt::AlignTop) {
+ minorArrowItem->setLine(minorGridItem->line().p1().x(),
+ axisRect.bottom(),
+ minorGridItem->line().p1().x(),
+ axisRect.bottom() - labelPadding() / 2);
+ } else if (axis()->alignment() == Qt::AlignBottom){
+ minorArrowItem->setLine(minorGridItem->line().p1().x(),
+ axisRect.top(),
+ minorGridItem->line().p1().x(),
+ axisRect.top() + labelPadding() / 2);
+ }
+
+ // check if the minor grid line and the axis tick should be shown
+ qreal minorXPos = minorGridItem->line().p1().x();
+ if (minorXPos < gridRect.left() || minorXPos > gridRect.right()) {
+ minorGridItem->setVisible(false);
+ minorArrowItem->setVisible(false);
+ } else {
+ minorGridItem->setVisible(true);
+ minorArrowItem->setVisible(true);
+ }
+ }
+ }
+ }
}
//begin/end grid line in case labels between
diff --git a/src/charts/axis/polarchartaxis.cpp b/src/charts/axis/polarchartaxis.cpp
index 0d111d02..6bf15ab0 100644
--- a/src/charts/axis/polarchartaxis.cpp
+++ b/src/charts/axis/polarchartaxis.cpp
@@ -19,6 +19,7 @@
#include <private/polarchartaxis_p.h>
#include <private/qabstractaxis_p.h>
#include <private/chartpresenter_p.h>
+#include <QtCharts/QValueAxis>
QT_CHARTS_BEGIN_NAMESPACE
@@ -77,6 +78,8 @@ void PolarChartAxis::updateLayout(QVector<qreal> &layout)
else if (diff < 0)
createItems(-diff);
+ updateMinorTickItems();
+
if (animation()) {
animation()->setValues(ChartAxisElement::layout(), layout);
presenter()->startAnimation(animation());
diff --git a/src/charts/axis/polarchartaxis_p.h b/src/charts/axis/polarchartaxis_p.h
index 34ade895..3a1cea6f 100644
--- a/src/charts/axis/polarchartaxis_p.h
+++ b/src/charts/axis/polarchartaxis_p.h
@@ -54,6 +54,7 @@ protected:
protected: // virtual functions
virtual void createItems(int count) = 0;
virtual void createAxisLabels(const QVector<qreal> &layout) = 0;
+ virtual void updateMinorTickItems() = 0;
public Q_SLOTS:
virtual void handleShadesBrushChanged(const QBrush &brush);
diff --git a/src/charts/axis/polarchartaxisangular.cpp b/src/charts/axis/polarchartaxisangular.cpp
index 9b22058d..b09ebc03 100644
--- a/src/charts/axis/polarchartaxisangular.cpp
+++ b/src/charts/axis/polarchartaxisangular.cpp
@@ -51,6 +51,8 @@ void PolarChartAxisAngular::updateGeometry()
QList<QGraphicsItem *> gridItemList = gridItems();
QList<QGraphicsItem *> labelItemList = labelItems();
QList<QGraphicsItem *> shadeItemList = shadeItems();
+ QList<QGraphicsItem *> minorGridItemList = minorGridItems();
+ QList<QGraphicsItem *> minorArrowItemList = minorArrowItems();
QGraphicsTextItem *title = titleItem();
QGraphicsEllipseItem *axisLine = static_cast<QGraphicsEllipseItem *>(arrowItemList.at(0));
@@ -217,6 +219,36 @@ void PolarChartAxisAngular::updateGeometry()
shadeItem->setVisible(true);
firstShade = false;
}
+
+ // Minor ticks
+ QValueAxis *valueAxis = qobject_cast<QValueAxis *>(axis());
+ if ((i + 1) != layout.size() && valueAxis) {
+ int minorTickCount = valueAxis->minorTickCount();
+ if (minorTickCount != 0) {
+ qreal minorAngularCoordinate = (layout[i + 1] - layout[i])
+ / qreal(minorTickCount + 1);
+ for (int j = 0; j < minorTickCount; j++) {
+ QGraphicsLineItem *minorGridItem =
+ static_cast<QGraphicsLineItem *>(minorGridItemList.at(i * minorTickCount + j));
+ QGraphicsLineItem *minorTickItem =
+ static_cast<QGraphicsLineItem *>(minorArrowItemList.at(i * minorTickCount + j));
+ qreal minorAngle = 90.0 - angularCoordinate
+ - minorAngularCoordinate * qreal(j + 1);
+ QLineF minorGridLine = QLineF::fromPolar(radius, minorAngle);
+ minorGridLine.translate(center);
+ minorGridItem->setLine(minorGridLine);
+ minorGridItem->setVisible(true);
+
+ QLineF minorTickLine(QLineF::fromPolar(radius - tickWidth() + 1,
+ minorAngle).p2(),
+ QLineF::fromPolar(radius + tickWidth() - 1,
+ minorAngle).p2());
+ minorTickLine.translate(center);
+ minorTickItem->setLine(minorTickLine);
+ minorTickItem->setVisible(true);
+ }
+ }
+ }
}
// Title, centered above the chart
@@ -299,6 +331,19 @@ void PolarChartAxisAngular::handleGridPenChanged(const QPen &pen)
static_cast<QGraphicsLineItem *>(item)->setPen(pen);
}
+void PolarChartAxisAngular::handleMinorArrowPenChanged(const QPen &pen)
+{
+ foreach (QGraphicsItem *item, minorArrowItems()) {
+ static_cast<QGraphicsLineItem *>(item)->setPen(pen);
+ }
+}
+
+void PolarChartAxisAngular::handleMinorGridPenChanged(const QPen &pen)
+{
+ foreach (QGraphicsItem *item, minorGridItems())
+ static_cast<QGraphicsLineItem *>(item)->setPen(pen);
+}
+
QSizeF PolarChartAxisAngular::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
{
Q_UNUSED(which);
@@ -426,6 +471,36 @@ QRectF PolarChartAxisAngular::moveLabelToPosition(qreal angularCoordinate, QPoin
return labelRect;
}
+void PolarChartAxisAngular::updateMinorTickItems()
+{
+ QValueAxis *valueAxis = qobject_cast<QValueAxis *>(this->axis());
+ if (valueAxis) {
+ int currentCount = minorArrowItems().size();
+ int expectedCount = valueAxis->minorTickCount() * (valueAxis->tickCount() - 1);
+ int diff = expectedCount - currentCount;
+ if (diff > 0) {
+ for (int i = 0; i < diff; i++) {
+ QGraphicsLineItem *minorArrow = new QGraphicsLineItem(presenter()->rootItem());
+ QGraphicsLineItem *minorGrid = new QGraphicsLineItem(presenter()->rootItem());
+ minorArrow->setPen(valueAxis->linePen());
+ minorGrid->setPen(valueAxis->minorGridLinePen());
+ minorArrowGroup()->addToGroup(minorArrow);
+ minorGridGroup()->addToGroup(minorGrid);
+ }
+ } else {
+ QList<QGraphicsItem *> minorGridLines = minorGridItems();
+ QList<QGraphicsItem *> minorArrows = minorArrowItems();
+ for (int i = 0; i > diff; i--) {
+ if (!minorGridLines.isEmpty())
+ delete(minorGridLines.takeLast());
+ if (!minorArrows.isEmpty())
+ delete(minorArrows.takeLast());
+ }
+ }
+ }
+}
+
+
#include "moc_polarchartaxisangular_p.cpp"
QT_CHARTS_END_NAMESPACE
diff --git a/src/charts/axis/polarchartaxisangular_p.h b/src/charts/axis/polarchartaxisangular_p.h
index a1cb0763..0e600a1d 100644
--- a/src/charts/axis/polarchartaxisangular_p.h
+++ b/src/charts/axis/polarchartaxisangular_p.h
@@ -45,12 +45,15 @@ public:
virtual void updateGeometry();
virtual void createItems(int count);
+ virtual void updateMinorTickItems();
qreal preferredAxisRadius(const QSizeF &maxSize);
public Q_SLOTS:
virtual void handleArrowPenChanged(const QPen &pen);
virtual void handleGridPenChanged(const QPen &pen);
+ virtual void handleMinorArrowPenChanged(const QPen &pen);
+ virtual void handleMinorGridPenChanged(const QPen &pen);
private:
QRectF moveLabelToPosition(qreal angularCoordinate, QPointF labelPoint, QRectF labelRect) const;
diff --git a/src/charts/axis/polarchartaxisradial.cpp b/src/charts/axis/polarchartaxisradial.cpp
index 5e3cec5d..af22a03e 100644
--- a/src/charts/axis/polarchartaxisradial.cpp
+++ b/src/charts/axis/polarchartaxisradial.cpp
@@ -47,6 +47,8 @@ void PolarChartAxisRadial::updateGeometry()
QList<QGraphicsItem *> gridItemList = gridItems();
QList<QGraphicsItem *> labelItemList = labelItems();
QList<QGraphicsItem *> shadeItemList = shadeItems();
+ QList<QGraphicsItem *> minorGridItemList = minorGridItems();
+ QList<QGraphicsItem *> minorArrowItemList = minorArrowItems();
QGraphicsTextItem* title = titleItem();
qreal radius = axisGeometry().height() / 2.0;
@@ -200,6 +202,37 @@ void PolarChartAxisRadial::updateGeometry()
shadeItem->setVisible(true);
firstShade = false;
}
+
+ // Minor ticks
+ QValueAxis *valueAxis = qobject_cast<QValueAxis *>(axis());
+ if ((i + 1) != layout.size() && valueAxis) {
+ int minorTickCount = valueAxis->minorTickCount();
+ if (minorTickCount != 0) {
+ qreal minorRadialCoordinate = (layout[i + 1] - layout[i])
+ / qreal(minorTickCount + 1) * 2.0;
+ for (int j = 0; j < minorTickCount; j++) {
+ QGraphicsEllipseItem *minorGridItem =
+ static_cast<QGraphicsEllipseItem *>(minorGridItemList.at(i * minorTickCount + j));
+ QGraphicsLineItem *minorTickItem =
+ static_cast<QGraphicsLineItem *>(minorArrowItemList.at(i * minorTickCount + j));
+
+ QRectF minorGridRect;
+ minorGridRect.setWidth(minorRadialCoordinate * qreal(i + 1)
+ + minorRadialCoordinate * qreal(i * minorTickCount + j));
+ minorGridRect.setHeight(minorRadialCoordinate * qreal(i + 1)
+ + minorRadialCoordinate
+ * qreal(i * minorTickCount + j));
+ minorGridRect.moveCenter(center);
+ minorGridItem->setRect(minorGridRect);
+ minorGridItem->setVisible(true);
+
+ QLineF minorTickLine(-tickWidth() + 1, 0.0, tickWidth() - 1, 0.0);
+ tickLine.translate(center.rx(), minorGridRect.top());
+ minorTickItem->setLine(minorTickLine);
+ minorTickItem->setVisible(true);
+ }
+ }
+ }
}
// Title, along the 0 axis
@@ -275,6 +308,18 @@ void PolarChartAxisRadial::handleGridPenChanged(const QPen &pen)
static_cast<QGraphicsEllipseItem *>(item)->setPen(pen);
}
+void PolarChartAxisRadial::handleMinorArrowPenChanged(const QPen &pen)
+{
+ foreach (QGraphicsItem *item, minorArrowItems())
+ static_cast<QGraphicsLineItem *>(item)->setPen(pen);
+}
+
+void PolarChartAxisRadial::handleMinorGridPenChanged(const QPen &pen)
+{
+ foreach (QGraphicsItem *item, minorGridItems())
+ static_cast<QGraphicsEllipseItem *>(item)->setPen(pen);
+}
+
QSizeF PolarChartAxisRadial::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
{
Q_UNUSED(which);
@@ -290,6 +335,35 @@ qreal PolarChartAxisRadial::preferredAxisRadius(const QSizeF &maxSize)
return radius;
}
+void PolarChartAxisRadial::updateMinorTickItems()
+{
+ QValueAxis *valueAxis = qobject_cast<QValueAxis *>(this->axis());
+ if (valueAxis) {
+ int currentCount = minorArrowItems().size();
+ int expectedCount = valueAxis->minorTickCount() * (valueAxis->tickCount() - 1);
+ int diff = expectedCount - currentCount;
+ if (diff > 0) {
+ for (int i = 0; i < diff; i++) {
+ QGraphicsLineItem *minorArrow = new QGraphicsLineItem(presenter()->rootItem());
+ QGraphicsEllipseItem *minorGrid = new QGraphicsEllipseItem(presenter()->rootItem());
+ minorArrow->setPen(valueAxis->linePen());
+ minorGrid->setPen(valueAxis->minorGridLinePen());
+ minorArrowGroup()->addToGroup(minorArrow);
+ minorGridGroup()->addToGroup(minorGrid);
+ }
+ } else {
+ QList<QGraphicsItem *> minorGridLines = minorGridItems();
+ QList<QGraphicsItem *> minorArrows = minorArrowItems();
+ for (int i = 0; i > diff; i--) {
+ if (!minorGridLines.isEmpty())
+ delete(minorGridLines.takeLast());
+ if (!minorArrows.isEmpty())
+ delete(minorArrows.takeLast());
+ }
+ }
+ }
+}
+
#include "moc_polarchartaxisradial_p.cpp"
QT_CHARTS_END_NAMESPACE
diff --git a/src/charts/axis/polarchartaxisradial_p.h b/src/charts/axis/polarchartaxisradial_p.h
index 19498105..fbf18420 100644
--- a/src/charts/axis/polarchartaxisradial_p.h
+++ b/src/charts/axis/polarchartaxisradial_p.h
@@ -45,12 +45,15 @@ public:
virtual void updateGeometry();
virtual void createItems(int count);
+ virtual void updateMinorTickItems();
qreal preferredAxisRadius(const QSizeF &maxSize);
public Q_SLOTS:
virtual void handleArrowPenChanged(const QPen &pen);
virtual void handleGridPenChanged(const QPen &pen);
+ virtual void handleMinorArrowPenChanged(const QPen &pen);
+ virtual void handleMinorGridPenChanged(const QPen &pen);
};
QT_CHARTS_END_NAMESPACE
diff --git a/src/charts/axis/qabstractaxis.cpp b/src/charts/axis/qabstractaxis.cpp
index 95d7f433..d290e406 100644
--- a/src/charts/axis/qabstractaxis.cpp
+++ b/src/charts/axis/qabstractaxis.cpp
@@ -114,6 +114,15 @@ QT_CHARTS_BEGIN_NAMESPACE
*/
/*!
+ \property QAbstractAxis::minorGridVisible
+ The visibility of the minor grid lines. Applies only to QValueAxis.
+*/
+/*!
+ \qmlproperty bool AbstractAxis::minorGridVisible
+ The visibility of the minor grid lines. Applies only to QValueAxis.
+*/
+
+/*!
\property QAbstractAxis::color
The color of the axis and ticks.
*/
@@ -128,6 +137,11 @@ QT_CHARTS_BEGIN_NAMESPACE
*/
/*!
+ \property QAbstractAxis::minorGridLinePen
+ The pen of the minor grid line. Applies only to QValueAxis.
+*/
+
+/*!
\property QAbstractAxis::labelsFont
The font of the axis labels.
*/
@@ -326,11 +340,25 @@ QT_CHARTS_BEGIN_NAMESPACE
*/
/*!
+ \fn void QAbstractAxis::minorGridVisibleChanged(bool visible)
+ Visibility of the minor grid lines of the axis has changed to \a visible.
+*/
+/*!
+ \qmlsignal AbstractAxis::onMinorGridVisibleChanged(bool visible)
+ Visibility of the minor grid lines of the axis has changed to \a visible.
+*/
+
+/*!
\fn void QAbstractAxis::gridLinePenChanged(const QPen& pen)
The pen of the grid line has changed to \a pen.
*/
/*!
+ \fn void QAbstractAxis::minorGridLinePenChanged(const QPen& pen)
+ The pen of the minor grid line has changed to \a pen.
+*/
+
+/*!
\fn void QAbstractAxis::colorChanged(QColor color)
Emitted if the \a color of the axis is changed.
*/
@@ -505,6 +533,19 @@ bool QAbstractAxis::isGridLineVisible() const
return d_ptr->m_gridLineVisible;
}
+void QAbstractAxis::setMinorGridLineVisible(bool visible)
+{
+ if (d_ptr->m_minorGridLineVisible != visible) {
+ d_ptr->m_minorGridLineVisible = visible;
+ emit minorGridVisibleChanged(visible);
+ }
+}
+
+bool QAbstractAxis::isMinorGridLineVisible() const
+{
+ return d_ptr->m_minorGridLineVisible;
+}
+
/*!
Sets \a pen used to draw grid line.
*/
@@ -527,6 +568,22 @@ QPen QAbstractAxis::gridLinePen() const
return d_ptr->m_gridLinePen;
}
+void QAbstractAxis::setMinorGridLinePen(const QPen &pen)
+{
+ if (d_ptr->m_minorGridLinePen != pen) {
+ d_ptr->m_minorGridLinePen = pen;
+ emit minorGridLinePenChanged(pen);
+ }
+}
+
+QPen QAbstractAxis::minorGridLinePen() const
+{
+ if (d_ptr->m_minorGridLinePen == QChartPrivate::defaultPen())
+ return QPen();
+ else
+ return d_ptr->m_minorGridLinePen;
+}
+
void QAbstractAxis::setLabelsVisible(bool visible)
{
if (d_ptr->m_labelsVisible != visible) {
@@ -873,6 +930,8 @@ QAbstractAxisPrivate::QAbstractAxisPrivate(QAbstractAxis *q)
m_axisBrush(QChartPrivate::defaultBrush()),
m_gridLineVisible(true),
m_gridLinePen(QChartPrivate::defaultPen()),
+ m_minorGridLineVisible(true),
+ m_minorGridLinePen(QChartPrivate::defaultPen()),
m_labelsVisible(true),
m_labelsBrush(QChartPrivate::defaultBrush()),
m_labelsFont(QChartPrivate::defaultFont()),
@@ -918,6 +977,8 @@ void QAbstractAxisPrivate::initializeTheme(ChartTheme* theme, bool forced)
if (forced || QChartPrivate::defaultPen() == m_gridLinePen)
q_ptr->setGridLinePen(theme->girdLinePen());
+ if (forced || QChartPrivate::defaultPen() == m_minorGridLinePen)
+ q_ptr->setMinorGridLinePen(theme->minorGridLinePen());
if (forced || QChartPrivate::defaultBrush() == m_labelsBrush)
q_ptr->setLabelsBrush(theme->labelBrush());
diff --git a/src/charts/axis/qabstractaxis.h b/src/charts/axis/qabstractaxis.h
index 585a1c66..48a16a72 100644
--- a/src/charts/axis/qabstractaxis.h
+++ b/src/charts/axis/qabstractaxis.h
@@ -46,6 +46,8 @@ class QT_CHARTS_EXPORT QAbstractAxis : public QObject
//grid
Q_PROPERTY(bool gridVisible READ isGridLineVisible WRITE setGridLineVisible NOTIFY gridVisibleChanged)
Q_PROPERTY(QPen gridLinePen READ gridLinePen WRITE setGridLinePen NOTIFY gridLinePenChanged)
+ Q_PROPERTY(bool minorGridVisible READ isMinorGridLineVisible WRITE setMinorGridLineVisible NOTIFY minorGridVisibleChanged)
+ Q_PROPERTY(QPen minorGridLinePen READ minorGridLinePen WRITE setMinorGridLinePen NOTIFY minorGridLinePenChanged)
//shades
Q_PROPERTY(bool shadesVisible READ shadesVisible WRITE setShadesVisible NOTIFY shadesVisibleChanged)
Q_PROPERTY(QColor shadesColor READ shadesColor WRITE setShadesColor NOTIFY shadesColorChanged)
@@ -103,6 +105,10 @@ public:
void setGridLineVisible(bool visible = true);
void setGridLinePen(const QPen &pen);
QPen gridLinePen() const;
+ bool isMinorGridLineVisible() const;
+ void setMinorGridLineVisible(bool visible = true);
+ void setMinorGridLinePen(const QPen &pen);
+ QPen minorGridLinePen() const;
//labels handling
bool labelsVisible() const;
@@ -160,6 +166,8 @@ Q_SIGNALS:
void labelsAngleChanged(int angle);
void gridLinePenChanged(const QPen &pen);
void gridVisibleChanged(bool visible);
+ void minorGridVisibleChanged(bool visible);
+ void minorGridLinePenChanged(const QPen &pen);
void colorChanged(QColor color);
void labelsColorChanged(QColor color);
void titleTextChanged(const QString &title);
diff --git a/src/charts/axis/qabstractaxis_p.h b/src/charts/axis/qabstractaxis_p.h
index 6b5f0c22..208b467e 100644
--- a/src/charts/axis/qabstractaxis_p.h
+++ b/src/charts/axis/qabstractaxis_p.h
@@ -100,6 +100,8 @@ private:
bool m_gridLineVisible;
QPen m_gridLinePen;
+ bool m_minorGridLineVisible;
+ QPen m_minorGridLinePen;
bool m_labelsVisible;
QBrush m_labelsBrush;
diff --git a/src/charts/axis/valueaxis/chartvalueaxisx.cpp b/src/charts/axis/valueaxis/chartvalueaxisx.cpp
index 6492f91d..f72b9919 100644
--- a/src/charts/axis/valueaxis/chartvalueaxisx.cpp
+++ b/src/charts/axis/valueaxis/chartvalueaxisx.cpp
@@ -33,6 +33,8 @@ ChartValueAxisX::ChartValueAxisX(QValueAxis *axis, QGraphicsItem *item )
m_axis(axis)
{
QObject::connect(m_axis, SIGNAL(tickCountChanged(int)), this, SLOT(handleTickCountChanged(int)));
+ QObject::connect(m_axis, SIGNAL(minorTickCountChanged(int)),
+ this, SLOT(handleMinorTickCountChanged(int)));
QObject::connect(m_axis, SIGNAL(labelFormatChanged(QString)), this, SLOT(handleLabelFormatChanged(QString)));
}
@@ -72,6 +74,14 @@ void ChartValueAxisX::handleTickCountChanged(int tick)
if(presenter()) presenter()->layout()->invalidate();
}
+void ChartValueAxisX::handleMinorTickCountChanged(int tick)
+{
+ Q_UNUSED(tick);
+ QGraphicsLayoutItem::updateGeometry();
+ if (presenter())
+ presenter()->layout()->invalidate();
+}
+
void ChartValueAxisX::handleLabelFormatChanged(const QString &format)
{
Q_UNUSED(format);
diff --git a/src/charts/axis/valueaxis/chartvalueaxisx_p.h b/src/charts/axis/valueaxis/chartvalueaxisx_p.h
index b220f904..e58fd8f4 100644
--- a/src/charts/axis/valueaxis/chartvalueaxisx_p.h
+++ b/src/charts/axis/valueaxis/chartvalueaxisx_p.h
@@ -47,6 +47,7 @@ protected:
void updateGeometry();
private Q_SLOTS:
void handleTickCountChanged(int tick);
+ void handleMinorTickCountChanged(int tick);
void handleLabelFormatChanged(const QString &format);
private:
diff --git a/src/charts/axis/valueaxis/chartvalueaxisy.cpp b/src/charts/axis/valueaxis/chartvalueaxisy.cpp
index 85f6bd8a..e143ea2e 100644
--- a/src/charts/axis/valueaxis/chartvalueaxisy.cpp
+++ b/src/charts/axis/valueaxis/chartvalueaxisy.cpp
@@ -32,6 +32,8 @@ ChartValueAxisY::ChartValueAxisY(QValueAxis *axis, QGraphicsItem *item)
m_axis(axis)
{
QObject::connect(m_axis, SIGNAL(tickCountChanged(int)), this, SLOT(handleTickCountChanged(int)));
+ QObject::connect(m_axis, SIGNAL(minorTickCountChanged(int)),
+ this, SLOT(handleMinorTickCountChanged(int)));
QObject::connect(m_axis, SIGNAL(labelFormatChanged(QString)), this, SLOT(handleLabelFormatChanged(QString)));
}
@@ -73,6 +75,14 @@ void ChartValueAxisY::handleTickCountChanged(int tick)
if (presenter()) presenter()->layout()->invalidate();
}
+void ChartValueAxisY::handleMinorTickCountChanged(int tick)
+{
+ Q_UNUSED(tick);
+ QGraphicsLayoutItem::updateGeometry();
+ if (presenter())
+ presenter()->layout()->invalidate();
+}
+
void ChartValueAxisY::handleLabelFormatChanged(const QString &format)
{
Q_UNUSED(format);
diff --git a/src/charts/axis/valueaxis/chartvalueaxisy_p.h b/src/charts/axis/valueaxis/chartvalueaxisy_p.h
index 896d8e7a..4c4faf1c 100644
--- a/src/charts/axis/valueaxis/chartvalueaxisy_p.h
+++ b/src/charts/axis/valueaxis/chartvalueaxisy_p.h
@@ -47,6 +47,7 @@ protected:
void updateGeometry();
private Q_SLOTS:
void handleTickCountChanged(int tick);
+ void handleMinorTickCountChanged(int tick);
void handleLabelFormatChanged(const QString &format);
private:
diff --git a/src/charts/axis/valueaxis/polarchartvalueaxisangular.cpp b/src/charts/axis/valueaxis/polarchartvalueaxisangular.cpp
index 0c196b66..bcd78112 100644
--- a/src/charts/axis/valueaxis/polarchartvalueaxisangular.cpp
+++ b/src/charts/axis/valueaxis/polarchartvalueaxisangular.cpp
@@ -26,6 +26,8 @@ PolarChartValueAxisAngular::PolarChartValueAxisAngular(QValueAxis *axis, QGraphi
: PolarChartAxisAngular(axis, item)
{
QObject::connect(axis, SIGNAL(tickCountChanged(int)), this, SLOT(handleTickCountChanged(int)));
+ QObject::connect(axis, SIGNAL(minorTickCountChanged(int)),
+ this, SLOT(handleMinorTickCountChanged(int)));
QObject::connect(axis, SIGNAL(labelFormatChanged(QString)), this, SLOT(handleLabelFormatChanged(QString)));
}
@@ -65,6 +67,14 @@ void PolarChartValueAxisAngular::handleTickCountChanged(int tick)
presenter()->layout()->invalidate();
}
+void PolarChartValueAxisAngular::handleMinorTickCountChanged(int tick)
+{
+ Q_UNUSED(tick);
+ QGraphicsLayoutItem::updateGeometry();
+ if (presenter())
+ presenter()->layout()->invalidate();
+}
+
void PolarChartValueAxisAngular::handleLabelFormatChanged(const QString &format)
{
Q_UNUSED(format);
diff --git a/src/charts/axis/valueaxis/polarchartvalueaxisangular_p.h b/src/charts/axis/valueaxis/polarchartvalueaxisangular_p.h
index 4dd178da..682ba462 100644
--- a/src/charts/axis/valueaxis/polarchartvalueaxisangular_p.h
+++ b/src/charts/axis/valueaxis/polarchartvalueaxisangular_p.h
@@ -29,6 +29,7 @@
#define POLARCHARTVALUEAXISANGULAR_P_H
#include <private/polarchartaxisangular_p.h>
+#include <QtCharts/QValueAxis>
QT_CHARTS_BEGIN_NAMESPACE
@@ -46,6 +47,7 @@ public:
private Q_SLOTS:
void handleTickCountChanged(int tick);
+ void handleMinorTickCountChanged(int tick);
void handleLabelFormatChanged(const QString &format);
};
diff --git a/src/charts/axis/valueaxis/polarchartvalueaxisradial.cpp b/src/charts/axis/valueaxis/polarchartvalueaxisradial.cpp
index dffa88e1..c447e383 100644
--- a/src/charts/axis/valueaxis/polarchartvalueaxisradial.cpp
+++ b/src/charts/axis/valueaxis/polarchartvalueaxisradial.cpp
@@ -26,6 +26,8 @@ PolarChartValueAxisRadial::PolarChartValueAxisRadial(QValueAxis *axis, QGraphics
: PolarChartAxisRadial(axis, item)
{
QObject::connect(axis, SIGNAL(tickCountChanged(int)), this, SLOT(handleTickCountChanged(int)));
+ QObject::connect(axis, SIGNAL(minorTickCountChanged(int)),
+ this, SLOT(handleMinorTickCountChanged(int)));
QObject::connect(axis, SIGNAL(labelFormatChanged(QString)), this, SLOT(handleLabelFormatChanged(QString)));
}
@@ -64,6 +66,14 @@ void PolarChartValueAxisRadial::handleTickCountChanged(int tick)
presenter()->layout()->invalidate();
}
+void PolarChartValueAxisRadial::handleMinorTickCountChanged(int tick)
+{
+ Q_UNUSED(tick);
+ QGraphicsLayoutItem::updateGeometry();
+ if (presenter())
+ presenter()->layout()->invalidate();
+}
+
void PolarChartValueAxisRadial::handleLabelFormatChanged(const QString &format)
{
Q_UNUSED(format);
diff --git a/src/charts/axis/valueaxis/polarchartvalueaxisradial_p.h b/src/charts/axis/valueaxis/polarchartvalueaxisradial_p.h
index 4e3f110e..38b748c1 100644
--- a/src/charts/axis/valueaxis/polarchartvalueaxisradial_p.h
+++ b/src/charts/axis/valueaxis/polarchartvalueaxisradial_p.h
@@ -46,6 +46,7 @@ public:
private Q_SLOTS:
void handleTickCountChanged(int tick);
+ void handleMinorTickCountChanged(int tick);
void handleLabelFormatChanged(const QString &format);
};
diff --git a/src/charts/axis/valueaxis/qvalueaxis.cpp b/src/charts/axis/valueaxis/qvalueaxis.cpp
index 8e9223c3..c17440e0 100644
--- a/src/charts/axis/valueaxis/qvalueaxis.cpp
+++ b/src/charts/axis/valueaxis/qvalueaxis.cpp
@@ -99,13 +99,24 @@ QT_CHARTS_BEGIN_NAMESPACE
/*!
\property QValueAxis::tickCount
- Defines the number of ticks on the axis. This indicates how many grid lines are draw on the chart.
- The default value is 5, and it can not be below 2.
+ Defines the number of ticks on the axis. This indicates how many grid lines are drawn on the
+ chart. The default value is 5, and it can not be below 2.
*/
/*!
- \qmlproperty real ValueAxis::tickCount
- Defines the number of ticks on the axis. This indicates how many grid lines are draw on the chart.
- The default value is 5, and it can not be below 2.
+ \qmlproperty int ValueAxis::tickCount
+ Defines the number of ticks on the axis. This indicates how many grid lines are drawn on the
+ chart. The default value is 5, and it can not be below 2.
+*/
+
+/*!
+ \property QValueAxis::minorTickCount
+ Defines the number of minor ticks on the axis. This indicates how many grid lines are drawn
+ between major ticks on the chart. Labels are not drawn for minor ticks. The default value is 0.
+*/
+/*!
+ \qmlproperty int ValueAxis::minorTickCount
+ Defines the number of minor ticks on the axis. This indicates how many grid lines are drawn
+ between major ticks on the chart. Labels are not drawn for minor ticks. The default value is 0.
*/
/*!
@@ -157,6 +168,15 @@ QT_CHARTS_BEGIN_NAMESPACE
*/
/*!
+ \fn void QValueAxis::minorTickCountChanged(int minorTickCount)
+ Axis emits signal when \a minorTickCount of axis has changed.
+*/
+/*!
+ \qmlsignal ValueAxis::minorTickCountChanged(int minorTickCount)
+ Axis emits signal when \a minorTickCount of axis has changed.
+*/
+
+/*!
\fn void QValueAxis::rangeChanged(qreal min, qreal max)
Axis emits signal when \a min or \a max of axis has changed.
*/
@@ -247,6 +267,21 @@ int QValueAxis::tickCount() const
return d->m_tickCount;
}
+void QValueAxis::setMinorTickCount(int count)
+{
+ Q_D(QValueAxis);
+ if (d->m_minorTickCount != count && count >= 0) {
+ d->m_minorTickCount = count;
+ emit minorTickCountChanged(count);
+ }
+}
+
+int QValueAxis::minorTickCount() const
+{
+ Q_D(const QValueAxis);
+ return d->m_minorTickCount;
+}
+
void QValueAxis::setLabelFormat(const QString &format)
{
Q_D(QValueAxis);
@@ -295,6 +330,7 @@ QValueAxisPrivate::QValueAxisPrivate(QValueAxis *q)
m_min(0),
m_max(0),
m_tickCount(5),
+ m_minorTickCount(0),
m_format(QString::null),
m_applying(false)
{
diff --git a/src/charts/axis/valueaxis/qvalueaxis.h b/src/charts/axis/valueaxis/qvalueaxis.h
index cc4248aa..3846785b 100644
--- a/src/charts/axis/valueaxis/qvalueaxis.h
+++ b/src/charts/axis/valueaxis/qvalueaxis.h
@@ -32,6 +32,7 @@ class QT_CHARTS_EXPORT QValueAxis : public QAbstractAxis
Q_PROPERTY(qreal min READ min WRITE setMin NOTIFY minChanged)
Q_PROPERTY(qreal max READ max WRITE setMax NOTIFY maxChanged)
Q_PROPERTY(QString labelFormat READ labelFormat WRITE setLabelFormat NOTIFY labelFormatChanged)
+ Q_PROPERTY(int minorTickCount READ minorTickCount WRITE setMinorTickCount NOTIFY minorTickCountChanged)
public:
explicit QValueAxis(QObject *parent = 0);
@@ -53,6 +54,8 @@ public:
//ticks handling
void setTickCount(int count);
int tickCount() const;
+ void setMinorTickCount(int count);
+ int minorTickCount() const;
void setLabelFormat(const QString &format);
QString labelFormat() const;
@@ -65,6 +68,7 @@ Q_SIGNALS:
void maxChanged(qreal max);
void rangeChanged(qreal min, qreal max);
void tickCountChanged(int tickCount);
+ void minorTickCountChanged(int tickCount);
void labelFormatChanged(const QString &format);
private:
diff --git a/src/charts/axis/valueaxis/qvalueaxis_p.h b/src/charts/axis/valueaxis/qvalueaxis_p.h
index 2dc1c624..acf745f0 100644
--- a/src/charts/axis/valueaxis/qvalueaxis_p.h
+++ b/src/charts/axis/valueaxis/qvalueaxis_p.h
@@ -57,6 +57,7 @@ private:
qreal m_min;
qreal m_max;
int m_tickCount;
+ int m_minorTickCount;
QString m_format;
bool m_applying;
Q_DECLARE_PUBLIC(QValueAxis)
diff --git a/src/charts/axis/verticalaxis.cpp b/src/charts/axis/verticalaxis.cpp
index f42b8e04..dfa1a3b0 100644
--- a/src/charts/axis/verticalaxis.cpp
+++ b/src/charts/axis/verticalaxis.cpp
@@ -96,6 +96,8 @@ void VerticalAxis::updateGeometry()
QList<QGraphicsItem *> lines = gridItems();
QList<QGraphicsItem *> shades = shadeItems();
+ QList<QGraphicsItem *> minorLines = minorGridItems();
+ QList<QGraphicsItem *> minorArrows = minorArrowItems();
for (int i = 0; i < layout.size(); ++i) {
//items
@@ -296,6 +298,54 @@ void VerticalAxis::updateGeometry()
tickItem->setVisible(true);
}
+ // add minor ticks
+ QValueAxis *valueAxis = qobject_cast<QValueAxis *>(axis());
+ if ((i + 1) != layout.size() && valueAxis) {
+ int minorTickCount = valueAxis->minorTickCount();
+ if (minorTickCount != 0) {
+ qreal minorTickDistance = (layout[i] - layout[i + 1]) / qreal(minorTickCount + 1);
+ for (int j = 0; j < minorTickCount; j++) {
+ QGraphicsLineItem *minorGridItem =
+ static_cast<QGraphicsLineItem *>(minorLines.at(i * minorTickCount + j));
+ QGraphicsLineItem *minorArrowItem =
+ static_cast<QGraphicsLineItem *>(minorArrows.at(i * minorTickCount + j));
+ if (i == 0) {
+ minorGridItem->setLine(gridRect.left(),
+ gridRect.bottom() - minorTickDistance * qreal(j + 1),
+ gridRect.right(),
+ gridRect.bottom() - minorTickDistance * qreal(j + 1));
+ } else {
+ minorGridItem->setLine(gridRect.left(),
+ gridItem->line().p1().y()
+ - minorTickDistance * qreal(j + 1),
+ gridRect.right(),
+ gridItem->line().p1().y()
+ - minorTickDistance * qreal(j + 1));
+ }
+ if (axis()->alignment() == Qt::AlignLeft) {
+ minorArrowItem->setLine(gridRect.left() - labelPadding() / 2,
+ minorGridItem->line().p1().y(),
+ gridRect.left(),
+ minorGridItem->line().p1().y());
+ } else if (axis()->alignment() == Qt::AlignRight){
+ minorArrowItem->setLine(gridRect.right(),
+ minorGridItem->line().p1().y(),
+ gridRect.right() + labelPadding() / 2,
+ minorGridItem->line().p1().y());
+ }
+
+ // check if the minor grid line and the axis tick should be shown
+ qreal minorYPos = minorGridItem->line().p1().y();
+ if (minorYPos < gridRect.top() || minorYPos > gridRect.bottom()) {
+ minorGridItem->setVisible(false);
+ minorArrowItem->setVisible(false);
+ } else {
+ minorGridItem->setVisible(true);
+ minorArrowItem->setVisible(true);
+ }
+ }
+ }
+ }
}
//begin/end grid line in case labels between
if (intervalAxis()) {
diff --git a/src/charts/themes/charttheme_p.h b/src/charts/themes/charttheme_p.h
index a0fdc188..143e1359 100644
--- a/src/charts/themes/charttheme_p.h
+++ b/src/charts/themes/charttheme_p.h
@@ -66,6 +66,7 @@ public:
BackgroundShadesMode backgroundShades() const { return m_backgroundShades; }
bool isBackgroundDropShadowEnabled() const { return m_backgroundDropShadowEnabled; }
QPen girdLinePen() const { return m_gridLinePen; }
+ QPen minorGridLinePen() const { return m_minorGridLinePen; }
protected:
QChart::ChartTheme m_id;
@@ -83,6 +84,7 @@ protected:
BackgroundShadesMode m_backgroundShades;
bool m_backgroundDropShadowEnabled;
QPen m_gridLinePen;
+ QPen m_minorGridLinePen;
};
diff --git a/src/charts/themes/chartthemebluecerulean_p.h b/src/charts/themes/chartthemebluecerulean_p.h
index 0f8db285..3b1c37de 100644
--- a/src/charts/themes/chartthemebluecerulean_p.h
+++ b/src/charts/themes/chartthemebluecerulean_p.h
@@ -57,6 +57,9 @@ public:
m_axisLinePen.setWidth(2);
m_gridLinePen = QPen(QRgb(0x84a2b0));
m_gridLinePen.setWidth(1);
+ m_minorGridLinePen = QPen(QRgb(0x84a2b0));
+ m_minorGridLinePen.setWidth(1);
+ m_minorGridLinePen.setStyle(Qt::DashLine);
m_backgroundShades = BackgroundShadesNone;
m_outlinePen = QPen(QRgb(0xebebeb));
m_outlinePen.setWidthF(2.0);
diff --git a/src/charts/themes/chartthemeblueicy_p.h b/src/charts/themes/chartthemeblueicy_p.h
index 25ba6fe6..469d6bc6 100644
--- a/src/charts/themes/chartthemeblueicy_p.h
+++ b/src/charts/themes/chartthemeblueicy_p.h
@@ -59,6 +59,9 @@ public:
m_axisLinePen.setWidth(2);
m_gridLinePen = QPen(QRgb(0xe2e2e2));
m_gridLinePen.setWidth(1);
+ m_minorGridLinePen = QPen(QRgb(0xe2e2e2));
+ m_minorGridLinePen.setWidth(1);
+ m_minorGridLinePen.setStyle(Qt::DashLine);
m_backgroundShades = BackgroundShadesNone;
m_outlinePen = QPen(QRgb(0x474747));
m_outlinePen.setWidthF(2.0);
diff --git a/src/charts/themes/chartthemebluencs_p.h b/src/charts/themes/chartthemebluencs_p.h
index 4cdc8973..40e04b35 100644
--- a/src/charts/themes/chartthemebluencs_p.h
+++ b/src/charts/themes/chartthemebluencs_p.h
@@ -58,6 +58,9 @@ public:
m_axisLinePen.setWidth(2);
m_gridLinePen = QPen(QRgb(0xe2e2e2));
m_gridLinePen.setWidth(1);
+ m_minorGridLinePen = QPen(QRgb(0xe2e2e2));
+ m_minorGridLinePen.setWidth(1);
+ m_minorGridLinePen.setStyle(Qt::DashLine);
m_backgroundShades = BackgroundShadesNone;
m_outlinePen = QPen(QRgb(0x474747));
m_outlinePen.setWidthF(2.0);
diff --git a/src/charts/themes/chartthemebrownsand_p.h b/src/charts/themes/chartthemebrownsand_p.h
index 38c4e423..cfdfb69d 100644
--- a/src/charts/themes/chartthemebrownsand_p.h
+++ b/src/charts/themes/chartthemebrownsand_p.h
@@ -58,6 +58,9 @@ public:
m_axisLinePen.setWidth(2);
m_gridLinePen = QPen(QRgb(0xd4cec3));
m_gridLinePen.setWidth(1);
+ m_minorGridLinePen = QPen(QRgb(0xd4cec3));
+ m_minorGridLinePen.setWidth(1);
+ m_minorGridLinePen.setStyle(Qt::DashLine);
m_backgroundShades = BackgroundShadesNone;
m_outlinePen = QPen(QRgb(0x222222));
m_outlinePen.setWidthF(2.0);
diff --git a/src/charts/themes/chartthemedark_p.h b/src/charts/themes/chartthemedark_p.h
index c069403e..2779dff0 100644
--- a/src/charts/themes/chartthemedark_p.h
+++ b/src/charts/themes/chartthemedark_p.h
@@ -58,6 +58,9 @@ public:
m_axisLinePen.setWidth(2);
m_gridLinePen = QPen(QRgb(0x86878c));
m_gridLinePen.setWidth(1);
+ m_minorGridLinePen = QPen(QRgb(0x86878c));
+ m_minorGridLinePen.setWidth(1);
+ m_minorGridLinePen.setStyle(Qt::DashLine);
m_backgroundShades = BackgroundShadesNone;
m_outlinePen = QPen(QRgb(0xd6d6d6));
m_outlinePen.setWidthF(2.0);
diff --git a/src/charts/themes/chartthemehighcontrast_p.h b/src/charts/themes/chartthemehighcontrast_p.h
index 785cf076..9af53fcf 100644
--- a/src/charts/themes/chartthemehighcontrast_p.h
+++ b/src/charts/themes/chartthemehighcontrast_p.h
@@ -59,6 +59,9 @@ public:
m_axisLinePen.setWidth(2);
m_gridLinePen = QPen(QRgb(0x8c8c8c));
m_gridLinePen.setWidth(1);
+ m_minorGridLinePen = QPen(QRgb(0x8c8c8c));
+ m_minorGridLinePen.setWidth(1);
+ m_minorGridLinePen.setStyle(Qt::DashLine);
m_backgroundShadesBrush = QBrush(QRgb(0xffeecd));
m_backgroundShades = BackgroundShadesHorizontal;
m_outlinePen = QPen(QColor(Qt::black));
diff --git a/src/charts/themes/chartthemelight_p.h b/src/charts/themes/chartthemelight_p.h
index b2bbe273..135f6ed5 100644
--- a/src/charts/themes/chartthemelight_p.h
+++ b/src/charts/themes/chartthemelight_p.h
@@ -60,6 +60,9 @@ public:
m_labelBrush = QBrush(QRgb(0x404044));
m_gridLinePen = QPen(QRgb(0xe2e2e2));
m_gridLinePen.setWidth(1);
+ m_minorGridLinePen = QPen(QRgb(0xe2e2e2));
+ m_minorGridLinePen.setWidth(1);
+ m_minorGridLinePen.setStyle(Qt::DashLine);
m_backgroundShades = BackgroundShadesNone;
m_outlinePen = QPen(0x4d4d4d);
m_outlinePen.setWidthF(2.0);
diff --git a/src/charts/themes/chartthemeqt_p.h b/src/charts/themes/chartthemeqt_p.h
index 9fe1f097..a9e98c40 100644
--- a/src/charts/themes/chartthemeqt_p.h
+++ b/src/charts/themes/chartthemeqt_p.h
@@ -61,6 +61,9 @@ public:
m_axisLinePen.setWidth(1);
m_gridLinePen = QPen(QRgb(0xd7d6d5));
m_gridLinePen.setWidth(1);
+ m_minorGridLinePen = QPen(QRgb(0xd7d6d5));
+ m_minorGridLinePen.setWidth(1);
+ m_minorGridLinePen.setStyle(Qt::DashLine);
m_backgroundShades = BackgroundShadesNone;
m_outlinePen = QPen(QRgb(0x35322f));
m_outlinePen.setWidthF(2.0);
diff --git a/src/charts/themes/chartthemesystem_p.h b/src/charts/themes/chartthemesystem_p.h
index 00ace098..4b7fb5f6 100644
--- a/src/charts/themes/chartthemesystem_p.h
+++ b/src/charts/themes/chartthemesystem_p.h
@@ -96,6 +96,9 @@ public:
m_labelBrush = QBrush(QRgb(0x404044));
m_gridLinePen = QPen(QRgb(0xe2e2e2));
m_gridLinePen.setWidth(1);
+ m_minorGridLinePen = QPen(QRgb(0xe2e2e2));
+ m_minorGridLinePen.setWidth(1);
+ m_minorGridLinePen.setStyle(Qt::DashLine);
m_backgroundShades = BackgroundShadesNone;
#elif defined(Q_OS_LINUX)
@@ -119,6 +122,9 @@ public:
m_labelBrush = QBrush(QRgb(0x404044));
m_gridLinePen = QPen(QRgb(0xe2e2e2));
m_gridLinePen.setWidth(1);
+ m_minorGridLinePen = QBrush(QRgb(0x404044));
+ m_minorGridLinePen.setWidth(1);
+ m_minorGridLinePen.setStyle(Qt::DashLine);
m_backgroundShades = BackgroundShadesNone;
#elif defined(Q_OS_MAC)
@@ -142,6 +148,9 @@ public:
m_labelBrush = QBrush(QRgb(0x404044));
m_gridLinePen = QPen(QRgb(0xe2e2e2));
m_gridLinePen.setWidth(1);
+ m_minorGridLinePen = QPen(QRgb(0xe2e2e2));
+ m_minorGridLinePen.setWidth(1);
+ m_minorGridLinePen.setStyle(Qt::DashLine);
m_backgroundShades = BackgroundShadesNone;
#else
@@ -165,6 +174,9 @@ public:
m_labelBrush = QBrush(QRgb(0x404044));
m_gridLinePen = QPen(QRgb(0xe2e2e2));
m_gridLinePen.setWidth(1);
+ m_minorGridLinePen = QPen(QRgb(0xe2e2e2));
+ m_minorGridLinePen.setWidth(1);
+ m_minorGridLinePen.setStyle(Qt::DashLine);
m_backgroundShades = BackgroundShadesNone;
#endif
}
diff --git a/tests/auto/qabstractaxis/tst_qabstractaxis.cpp b/tests/auto/qabstractaxis/tst_qabstractaxis.cpp
index 254b806e..ad240e15 100644
--- a/tests/auto/qabstractaxis/tst_qabstractaxis.cpp
+++ b/tests/auto/qabstractaxis/tst_qabstractaxis.cpp
@@ -58,6 +58,8 @@ void tst_QAbstractAxis::qabstractaxis()
QCOMPARE(m_axis->labelsFont(), QFont());
QCOMPARE(m_axis->labelsVisible(), true);
QCOMPARE(m_axis->orientation(), Qt::Orientation(0));
+ QCOMPARE(m_axis->minorGridLinePen(), QPen());
+ QCOMPARE(m_axis->isMinorGridLineVisible(), true);
m_axis->setLineVisible(false);
m_axis->setLinePen(QPen());
m_axis->setLinePenColor(QColor());
@@ -77,6 +79,8 @@ void tst_QAbstractAxis::qabstractaxis()
m_axis->setShadesPen(QPen());
m_axis->setShadesVisible(false);
m_axis->setVisible(false);
+ m_axis->setMinorGridLinePen(QPen());
+ m_axis->setMinorGridLineVisible(false);
//TODO QCOMPARE(m_axis->shadesBrush(), QBrush());
QCOMPARE(m_axis->shadesPen(), QPen());
QCOMPARE(m_axis->shadesVisible(), false);
@@ -106,6 +110,7 @@ void tst_QAbstractAxis::axisPen()
QSignalSpy spy6(m_axis, SIGNAL(shadesColorChanged(QColor)));
QSignalSpy spy7(m_axis, SIGNAL(shadesVisibleChanged(bool)));
QSignalSpy spy8(m_axis, SIGNAL(visibleChanged(bool)));
+ QSignalSpy spy9(m_axis, SIGNAL(minorGridVisibleChanged(bool)));
m_axis->setLinePen(axisPen);
QCOMPARE(m_axis->linePen(), axisPen);
@@ -119,6 +124,7 @@ void tst_QAbstractAxis::axisPen()
QCOMPARE(spy6.count(), 0);
QCOMPARE(spy7.count(), 0);
QCOMPARE(spy8.count(), 0);
+ QCOMPARE(spy9.count(), 0);
m_chart->setAxisX(m_axis, m_series);
m_view->show();
@@ -179,6 +185,52 @@ void tst_QAbstractAxis::gridLinePen()
//TODO QCOMPARE(m_axis->gridLinePen(), gridLinePen);
}
+void tst_QAbstractAxis::minorGridLinePen_data()
+{
+
+ QTest::addColumn<QPen>("minorGridLinePen");
+ QTest::newRow("null") << QPen();
+ QTest::newRow("blue") << QPen(Qt::blue);
+ QTest::newRow("black") << QPen(Qt::black);
+ QTest::newRow("red") << QPen(Qt::red);
+
+}
+
+void tst_QAbstractAxis::minorGridLinePen()
+{
+ QFETCH(QPen, minorGridLinePen);
+
+ QSignalSpy spy0(m_axis, SIGNAL(lineVisibleChanged(bool)));
+ QSignalSpy spy1(m_axis, SIGNAL(colorChanged(QColor)));
+ QSignalSpy spy2(m_axis, SIGNAL(gridVisibleChanged(bool)));
+ QSignalSpy spy3(m_axis, SIGNAL(labelsColorChanged(QColor)));
+ QSignalSpy spy4(m_axis, SIGNAL(labelsVisibleChanged(bool)));
+ QSignalSpy spy5(m_axis, SIGNAL(shadesBorderColorChanged(QColor)));
+ QSignalSpy spy6(m_axis, SIGNAL(shadesColorChanged(QColor)));
+ QSignalSpy spy7(m_axis, SIGNAL(shadesVisibleChanged(bool)));
+ QSignalSpy spy8(m_axis, SIGNAL(visibleChanged(bool)));
+ QSignalSpy spy9(m_axis, SIGNAL(minorGridVisibleChanged(bool)));
+
+ m_axis->setMinorGridLinePen(minorGridLinePen);
+ QCOMPARE(m_axis->minorGridLinePen(), minorGridLinePen);
+
+ QCOMPARE(spy0.count(), 0);
+ QCOMPARE(spy1.count(), 0);
+ QCOMPARE(spy2.count(), 0);
+ QCOMPARE(spy3.count(), 0);
+ QCOMPARE(spy4.count(), 0);
+ QCOMPARE(spy5.count(), 0);
+ QCOMPARE(spy6.count(), 0);
+ QCOMPARE(spy7.count(), 0);
+ QCOMPARE(spy8.count(), 0);
+ QCOMPARE(spy9.count(), 0);
+
+ m_chart->setAxisX(m_axis, m_series);
+ m_view->show();
+ QTest::qWaitForWindowShown(m_view);
+
+}
+
void tst_QAbstractAxis::lineVisible_data()
{
QTest::addColumn<bool>("lineVisible");
@@ -201,6 +253,7 @@ void tst_QAbstractAxis::lineVisible()
QSignalSpy spy6(m_axis, SIGNAL(shadesColorChanged(QColor)));
QSignalSpy spy7(m_axis, SIGNAL(shadesVisibleChanged(bool)));
QSignalSpy spy8(m_axis, SIGNAL(visibleChanged(bool)));
+ QSignalSpy spy9(m_axis, SIGNAL(minorGridVisibleChanged(bool)));
m_axis->setLineVisible(lineVisible);
QCOMPARE(m_axis->isLineVisible(), lineVisible);
@@ -214,6 +267,7 @@ void tst_QAbstractAxis::lineVisible()
QCOMPARE(spy6.count(), 0);
QCOMPARE(spy7.count(), 0);
QCOMPARE(spy8.count(), 0);
+ QCOMPARE(spy9.count(), 0);
m_chart->setAxisX(m_axis, m_series);
m_view->show();
@@ -264,6 +318,51 @@ void tst_QAbstractAxis::gridLineVisible()
}
+void tst_QAbstractAxis::minorGridLineVisible_data()
+{
+ QTest::addColumn<bool>("minorGridLineVisible");
+ QTest::newRow("true") << true;
+ QTest::newRow("false") << false;
+}
+
+void tst_QAbstractAxis::minorGridLineVisible()
+{
+ QFETCH(bool, minorGridLineVisible);
+
+ m_axis->setMinorGridLineVisible(!minorGridLineVisible);
+
+ QSignalSpy spy0(m_axis, SIGNAL(lineVisibleChanged(bool)));
+ QSignalSpy spy1(m_axis, SIGNAL(colorChanged(QColor)));
+ QSignalSpy spy2(m_axis, SIGNAL(gridVisibleChanged(bool)));
+ QSignalSpy spy3(m_axis, SIGNAL(labelsColorChanged(QColor)));
+ QSignalSpy spy4(m_axis, SIGNAL(labelsVisibleChanged(bool)));
+ QSignalSpy spy5(m_axis, SIGNAL(shadesBorderColorChanged(QColor)));
+ QSignalSpy spy6(m_axis, SIGNAL(shadesColorChanged(QColor)));
+ QSignalSpy spy7(m_axis, SIGNAL(shadesVisibleChanged(bool)));
+ QSignalSpy spy8(m_axis, SIGNAL(visibleChanged(bool)));
+ QSignalSpy spy9(m_axis, SIGNAL(minorGridVisibleChanged(bool)));
+
+ m_axis->setMinorGridLineVisible(minorGridLineVisible);
+ QCOMPARE(m_axis->isMinorGridLineVisible(), minorGridLineVisible);
+
+ QCOMPARE(spy0.count(), 0);
+ QCOMPARE(spy1.count(), 0);
+ QCOMPARE(spy2.count(), 0);
+ QCOMPARE(spy3.count(), 0);
+ QCOMPARE(spy4.count(), 0);
+ QCOMPARE(spy5.count(), 0);
+ QCOMPARE(spy6.count(), 0);
+ QCOMPARE(spy7.count(), 0);
+ QCOMPARE(spy8.count(), 0);
+ QCOMPARE(spy9.count(), 1);
+
+ m_chart->setAxisX(m_axis, m_series);
+ m_view->show();
+ QTest::qWaitForWindowShown(m_view);
+ QCOMPARE(m_axis->isMinorGridLineVisible(), minorGridLineVisible);
+
+}
+
void tst_QAbstractAxis::visible_data()
{
QTest::addColumn<bool>("visible");
@@ -286,6 +385,7 @@ void tst_QAbstractAxis::visible()
QSignalSpy spy6(m_axis, SIGNAL(shadesColorChanged(QColor)));
QSignalSpy spy7(m_axis, SIGNAL(shadesVisibleChanged(bool)));
QSignalSpy spy8(m_axis, SIGNAL(visibleChanged(bool)));
+ QSignalSpy spy9(m_axis, SIGNAL(minorGridVisibleChanged(bool)));
m_axis->setVisible(visible);
QCOMPARE(m_axis->isVisible(), visible);
@@ -299,6 +399,7 @@ void tst_QAbstractAxis::visible()
QCOMPARE(spy6.count(), 0);
QCOMPARE(spy7.count(), 0);
QCOMPARE(spy8.count(), 1);
+ QCOMPARE(spy9.count(), 0);
m_chart->setAxisX(m_axis, m_series);
m_view->show();
@@ -327,6 +428,7 @@ void tst_QAbstractAxis::labelsAngle()
QSignalSpy spy6(m_axis, SIGNAL(shadesColorChanged(QColor)));
QSignalSpy spy7(m_axis, SIGNAL(shadesVisibleChanged(bool)));
QSignalSpy spy8(m_axis, SIGNAL(visibleChanged(bool)));
+ QSignalSpy spy9(m_axis, SIGNAL(minorGridVisibleChanged(bool)));
m_axis->setLabelsAngle(labelsAngle);
QCOMPARE(m_axis->labelsAngle(), labelsAngle);
@@ -340,6 +442,7 @@ void tst_QAbstractAxis::labelsAngle()
QCOMPARE(spy6.count(), 0);
QCOMPARE(spy7.count(), 0);
QCOMPARE(spy8.count(), 0);
+ QCOMPARE(spy9.count(), 0);
m_chart->setAxisX(m_axis, m_series);
m_view->show();
@@ -370,6 +473,7 @@ void tst_QAbstractAxis::labelsBrush()
QSignalSpy spy6(m_axis, SIGNAL(shadesColorChanged(QColor)));
QSignalSpy spy7(m_axis, SIGNAL(shadesVisibleChanged(bool)));
QSignalSpy spy8(m_axis, SIGNAL(visibleChanged(bool)));
+ QSignalSpy spy9(m_axis, SIGNAL(minorGridVisibleChanged(bool)));
m_axis->setLabelsBrush(labelsBrush);
QCOMPARE(m_axis->labelsBrush(), labelsBrush);
@@ -383,6 +487,7 @@ void tst_QAbstractAxis::labelsBrush()
//TODO QCOMPARE(spy6.count(), 0);
QCOMPARE(spy7.count(), 0);
QCOMPARE(spy8.count(), 0);
+ QCOMPARE(spy9.count(), 0);
m_view->show();
QTest::qWaitForWindowShown(m_view);
@@ -421,6 +526,7 @@ void tst_QAbstractAxis::labelsFont()
QSignalSpy spy6(m_axis, SIGNAL(shadesColorChanged(QColor)));
QSignalSpy spy7(m_axis, SIGNAL(shadesVisibleChanged(bool)));
QSignalSpy spy8(m_axis, SIGNAL(visibleChanged(bool)));
+ QSignalSpy spy9(m_axis, SIGNAL(minorGridVisibleChanged(bool)));
m_axis->setLabelsFont(labelsFont);
QCOMPARE(m_axis->labelsFont(), labelsFont);
@@ -434,6 +540,7 @@ void tst_QAbstractAxis::labelsFont()
QCOMPARE(spy6.count(), 0);
QCOMPARE(spy7.count(), 0);
QCOMPARE(spy8.count(), 0);
+ QCOMPARE(spy9.count(), 0);
m_view->show();
QTest::qWaitForWindowShown(m_view);
@@ -463,6 +570,7 @@ void tst_QAbstractAxis::labelsVisible()
QSignalSpy spy6(m_axis, SIGNAL(shadesColorChanged(QColor)));
QSignalSpy spy7(m_axis, SIGNAL(shadesVisibleChanged(bool)));
QSignalSpy spy8(m_axis, SIGNAL(visibleChanged(bool)));
+ QSignalSpy spy9(m_axis, SIGNAL(minorGridVisibleChanged(bool)));
m_axis->setLabelsVisible(labelsVisible);
QCOMPARE(m_axis->labelsVisible(), labelsVisible);
@@ -476,6 +584,7 @@ void tst_QAbstractAxis::labelsVisible()
QCOMPARE(spy6.count(), 0);
QCOMPARE(spy7.count(), 0);
QCOMPARE(spy8.count(), 0);
+ QCOMPARE(spy9.count(), 0);
m_chart->setAxisX(m_axis, m_series);
m_view->show();
@@ -503,6 +612,7 @@ void tst_QAbstractAxis::orientation()
QSignalSpy spy6(m_axis, SIGNAL(shadesColorChanged(QColor)));
QSignalSpy spy7(m_axis, SIGNAL(shadesVisibleChanged(bool)));
QSignalSpy spy8(m_axis, SIGNAL(visibleChanged(bool)));
+ QSignalSpy spy9(m_axis, SIGNAL(minorGridVisibleChanged(bool)));
if(orientation==Qt::Vertical){
m_chart->setAxisY(m_axis,m_series);
@@ -520,6 +630,7 @@ void tst_QAbstractAxis::orientation()
QCOMPARE(spy6.count(), 0);
QCOMPARE(spy7.count(), 0);
QCOMPARE(spy8.count(), 0);
+ QCOMPARE(spy9.count(), 0);
m_view->show();
QTest::qWaitForWindowShown(m_view);
@@ -604,6 +715,7 @@ void tst_QAbstractAxis::shadesBrush()
QSignalSpy spy6(m_axis, SIGNAL(shadesColorChanged(QColor)));
QSignalSpy spy7(m_axis, SIGNAL(shadesVisibleChanged(bool)));
QSignalSpy spy8(m_axis, SIGNAL(visibleChanged(bool)));
+ QSignalSpy spy9(m_axis, SIGNAL(minorGridVisibleChanged(bool)));
m_axis->setShadesBrush(shadesBrush);
QCOMPARE(m_axis->shadesBrush(), shadesBrush);
@@ -617,6 +729,7 @@ void tst_QAbstractAxis::shadesBrush()
//TODO QCOMPARE(spy6.count(), 0);
QCOMPARE(spy7.count(), 0);
QCOMPARE(spy8.count(), 0);
+ QCOMPARE(spy9.count(), 0);
m_view->show();
QTest::qWaitForWindowShown(m_view);
@@ -655,6 +768,7 @@ void tst_QAbstractAxis::shadesPen()
QSignalSpy spy6(m_axis, SIGNAL(shadesColorChanged(QColor)));
QSignalSpy spy7(m_axis, SIGNAL(shadesVisibleChanged(bool)));
QSignalSpy spy8(m_axis, SIGNAL(visibleChanged(bool)));
+ QSignalSpy spy9(m_axis, SIGNAL(minorGridVisibleChanged(bool)));
m_axis->setShadesPen(shadesPen);
QCOMPARE(m_axis->shadesPen(), shadesPen);
@@ -668,6 +782,7 @@ void tst_QAbstractAxis::shadesPen()
QCOMPARE(spy6.count(), 0);
QCOMPARE(spy7.count(), 0);
QCOMPARE(spy8.count(), 0);
+ QCOMPARE(spy9.count(), 0);
m_chart->setAxisX(m_axis, m_series);
m_view->show();
@@ -697,6 +812,7 @@ void tst_QAbstractAxis::shadesVisible()
QSignalSpy spy6(m_axis, SIGNAL(shadesColorChanged(QColor)));
QSignalSpy spy7(m_axis, SIGNAL(shadesVisibleChanged(bool)));
QSignalSpy spy8(m_axis, SIGNAL(visibleChanged(bool)));
+ QSignalSpy spy9(m_axis, SIGNAL(minorGridVisibleChanged(bool)));
m_axis->setShadesVisible(shadesVisible);
QCOMPARE(m_axis->shadesVisible(), shadesVisible);
@@ -710,6 +826,7 @@ void tst_QAbstractAxis::shadesVisible()
QCOMPARE(spy6.count(), 0);
QCOMPARE(spy7.count(), 1);
QCOMPARE(spy8.count(), 0);
+ QCOMPARE(spy9.count(), 0);
m_chart->setAxisX(m_axis, m_series);
m_view->show();
@@ -736,6 +853,7 @@ void tst_QAbstractAxis::show()
QSignalSpy spy6(m_axis, SIGNAL(shadesColorChanged(QColor)));
QSignalSpy spy7(m_axis, SIGNAL(shadesVisibleChanged(bool)));
QSignalSpy spy8(m_axis, SIGNAL(visibleChanged(bool)));
+ QSignalSpy spy9(m_axis, SIGNAL(minorGridVisibleChanged(bool)));
m_axis->show();
@@ -748,6 +866,7 @@ void tst_QAbstractAxis::show()
QCOMPARE(spy6.count(), 0);
QCOMPARE(spy7.count(), 0);
QCOMPARE(spy8.count(), 1);
+ QCOMPARE(spy9.count(), 0);
QCOMPARE(m_axis->isVisible(), true);
}
@@ -770,6 +889,7 @@ void tst_QAbstractAxis::hide()
QSignalSpy spy6(m_axis, SIGNAL(shadesColorChanged(QColor)));
QSignalSpy spy7(m_axis, SIGNAL(shadesVisibleChanged(bool)));
QSignalSpy spy8(m_axis, SIGNAL(visibleChanged(bool)));
+ QSignalSpy spy9(m_axis, SIGNAL(minorGridVisibleChanged(bool)));
m_axis->hide();
@@ -782,6 +902,7 @@ void tst_QAbstractAxis::hide()
QCOMPARE(spy6.count(), 0);
QCOMPARE(spy7.count(), 0);
QCOMPARE(spy8.count(), 1);
+ QCOMPARE(spy9.count(), 0);
QCOMPARE(m_axis->isVisible(),false);
}
diff --git a/tests/auto/qabstractaxis/tst_qabstractaxis.h b/tests/auto/qabstractaxis/tst_qabstractaxis.h
index b1572c16..6be7a23f 100644
--- a/tests/auto/qabstractaxis/tst_qabstractaxis.h
+++ b/tests/auto/qabstractaxis/tst_qabstractaxis.h
@@ -43,10 +43,14 @@ private slots:
void axisPenColor();
void gridLinePen_data();
void gridLinePen();
+ void minorGridLinePen_data();
+ void minorGridLinePen();
void lineVisible_data();
void lineVisible();
void gridLineVisible_data();
void gridLineVisible();
+ void minorGridLineVisible_data();
+ void minorGridLineVisible();
void visible_data();
void visible();
void labelsAngle_data();
diff --git a/tests/manual/chartviewer/window.cpp b/tests/manual/chartviewer/window.cpp
index ee0c249d..73600d94 100644
--- a/tests/manual/chartviewer/window.cpp
+++ b/tests/manual/chartviewer/window.cpp
@@ -23,6 +23,7 @@
#include <QtCharts/QChartView>
#include <QtCharts/QAreaSeries>
#include <QtCharts/QLegend>
+#include <QtCharts/QValueAxis>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QFormLayout>
#include <QtWidgets/QComboBox>
@@ -50,6 +51,10 @@ Window::Window(const QVariantHash &parameters, QWidget *parent)
m_legendComboBox(0),
m_templateComboBox(0),
m_viewComboBox(0),
+ m_xTickSpinBox(0),
+ m_yTickSpinBox(0),
+ m_minorXTickSpinBox(0),
+ m_minorYTickSpinBox(0),
m_openGLCheckBox(0),
m_zoomCheckBox(0),
m_scrollCheckBox(0),
@@ -78,6 +83,14 @@ Window::Window(const QVariantHash &parameters, QWidget *parent)
settingsLayout->addItem(m_widgetHash["templateComboBox"]);
settingsLayout->addItem(m_widgetHash["scrollCheckBox"]);
settingsLayout->addItem(m_widgetHash["zoomCheckBox"]);
+ settingsLayout->addItem(m_widgetHash["xTickLabel"]);
+ settingsLayout->addItem(m_widgetHash["xTickSpinBox"]);
+ settingsLayout->addItem(m_widgetHash["yTickLabel"]);
+ settingsLayout->addItem(m_widgetHash["yTickSpinBox"]);
+ settingsLayout->addItem(m_widgetHash["minorXTickLabel"]);
+ settingsLayout->addItem(m_widgetHash["minorXTickSpinBox"]);
+ settingsLayout->addItem(m_widgetHash["minorYTickLabel"]);
+ settingsLayout->addItem(m_widgetHash["minorYTickSpinBox"]);
settingsLayout->addStretch();
m_baseLayout->setOrientation(Qt::Horizontal);
@@ -114,6 +127,10 @@ void Window::connectSignals()
QObject::connect(m_form, SIGNAL(geometryChanged()), this , SLOT(handleGeometryChanged()));
QObject::connect(m_viewComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(updateUI()));
QObject::connect(m_themeComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(updateUI()));
+ QObject::connect(m_xTickSpinBox, SIGNAL(valueChanged(int)), this, SLOT(updateUI()));
+ QObject::connect(m_yTickSpinBox, SIGNAL(valueChanged(int)), this, SLOT(updateUI()));
+ QObject::connect(m_minorXTickSpinBox, SIGNAL(valueChanged(int)), this, SLOT(updateUI()));
+ QObject::connect(m_minorYTickSpinBox, SIGNAL(valueChanged(int)), this, SLOT(updateUI()));
QObject::connect(m_antialiasCheckBox, SIGNAL(toggled(bool)), this, SLOT(updateUI()));
QObject::connect(m_openGLCheckBox, SIGNAL(toggled(bool)), this, SLOT(updateUI()));
QObject::connect(m_zoomCheckBox, SIGNAL(toggled(bool)), this, SLOT(updateUI()));
@@ -128,6 +145,14 @@ void Window::createProxyWidgets()
{
m_themeComboBox = createThemeBox();
m_viewComboBox = createViewBox();
+ m_xTickSpinBox = new QSpinBox();
+ m_xTickSpinBox->setMinimum(2);
+ m_xTickSpinBox->setValue(5);
+ m_yTickSpinBox = new QSpinBox();
+ m_yTickSpinBox->setMinimum(2);
+ m_yTickSpinBox->setValue(5);
+ m_minorXTickSpinBox = new QSpinBox();
+ m_minorYTickSpinBox = new QSpinBox();
m_antialiasCheckBox = new QCheckBox(tr("Anti-aliasing"));
m_animatedComboBox = createAnimationBox();
m_legendComboBox = createLegendBox();
@@ -141,6 +166,14 @@ void Window::createProxyWidgets()
m_widgetHash["antialiasCheckBox"] = m_scene->addWidget(m_antialiasCheckBox);
m_widgetHash["animatedComboBox"] = m_scene->addWidget(m_animatedComboBox);
m_widgetHash["legendComboBox"] = m_scene->addWidget(m_legendComboBox);
+ m_widgetHash["xTickLabel"] = m_scene->addWidget(new QLabel("X Tick"));
+ m_widgetHash["xTickSpinBox"] = m_scene->addWidget(m_xTickSpinBox);
+ m_widgetHash["yTickLabel"] = m_scene->addWidget(new QLabel("Y Tick"));
+ m_widgetHash["yTickSpinBox"] = m_scene->addWidget(m_yTickSpinBox);
+ m_widgetHash["minorXTickLabel"] = m_scene->addWidget(new QLabel("Minor X Tick"));
+ m_widgetHash["minorXTickSpinBox"] = m_scene->addWidget(m_minorXTickSpinBox);
+ m_widgetHash["minorYTickLabel"] = m_scene->addWidget(new QLabel("Minor Y Tick"));
+ m_widgetHash["minorYTickSpinBox"] = m_scene->addWidget(m_minorYTickSpinBox);
m_widgetHash["openGLCheckBox"] = m_scene->addWidget(m_openGLCheckBox);
m_widgetHash["themeLabel"] = m_scene->addWidget(new QLabel("Theme"));
m_widgetHash["animationsLabel"] = m_scene->addWidget(new QLabel("Animations"));
@@ -288,6 +321,10 @@ void Window::updateUI()
checkAnimationOptions();
checkLegend();
checkState();
+ checkXTick();
+ checkYTick();
+ checkMinorXTick();
+ checkMinorYTick();
}
void Window::checkView()
@@ -299,6 +336,50 @@ void Window::checkView()
}
}
+void Window::checkXTick()
+{
+ foreach (QChart *chart, m_grid->charts()) {
+ if (qobject_cast<QValueAxis *>(chart->axisX())) {
+ QValueAxis *valueAxis = qobject_cast<QValueAxis *>(chart->axisX());
+ valueAxis->setGridLineVisible();
+ valueAxis->setTickCount(m_xTickSpinBox->value());
+ }
+ }
+}
+
+void Window::checkYTick()
+{
+ foreach (QChart *chart, m_grid->charts()) {
+ if (qobject_cast<QValueAxis *>(chart->axisY())) {
+ QValueAxis *valueAxis = qobject_cast<QValueAxis *>(chart->axisY());
+ valueAxis->setGridLineVisible();
+ valueAxis->setTickCount(m_yTickSpinBox->value());
+ }
+ }
+}
+
+void Window::checkMinorXTick()
+{
+ foreach (QChart *chart, m_grid->charts()) {
+ if (qobject_cast<QValueAxis *>(chart->axisX())) {
+ QValueAxis *valueAxis = qobject_cast<QValueAxis *>(chart->axisX());
+ valueAxis->setMinorGridLineVisible();
+ valueAxis->setMinorTickCount(m_minorXTickSpinBox->value());
+ }
+ }
+}
+
+void Window::checkMinorYTick()
+{
+ foreach (QChart *chart, m_grid->charts()) {
+ if (qobject_cast<QValueAxis *>(chart->axisY())) {
+ QValueAxis *valueAxis = qobject_cast<QValueAxis *>(chart->axisY());
+ valueAxis->setMinorGridLineVisible();
+ valueAxis->setMinorTickCount(m_minorYTickSpinBox->value());
+ }
+ }
+}
+
void Window::checkLegend()
{
Qt::Alignment alignment(m_legendComboBox->itemData(m_legendComboBox->currentIndex()).toInt());
diff --git a/tests/manual/chartviewer/window.h b/tests/manual/chartviewer/window.h
index 26e13f92..c3762c68 100644
--- a/tests/manual/chartviewer/window.h
+++ b/tests/manual/chartviewer/window.h
@@ -22,6 +22,7 @@
#include <QtCharts/QChartGlobal>
#include <QtCore/QHash>
#include <QtWidgets/QComboBox>
+#include <QtWidgets/QSpinBox>
QT_BEGIN_NAMESPACE
class QCheckBox;
@@ -69,6 +70,10 @@ private:
inline void checkTheme();
inline void checkState();
inline void checkTemplate();
+ inline void checkXTick();
+ inline void checkYTick();
+ inline void checkMinorXTick();
+ inline void checkMinorYTick();
QMenu *createMenu();
QAction *createMenuAction(QMenu *menu, const QIcon &icon, const QString &text, const QVariant &data);
void initializeFromParamaters(const QVariantHash &parameters);
@@ -80,6 +85,10 @@ private:
QGraphicsWidget *m_form;
QComboBox *m_themeComboBox;
+ QSpinBox *m_xTickSpinBox;
+ QSpinBox *m_yTickSpinBox;
+ QSpinBox *m_minorXTickSpinBox;
+ QSpinBox *m_minorYTickSpinBox;
QCheckBox *m_antialiasCheckBox;
QComboBox *m_animatedComboBox;
QComboBox *m_legendComboBox;
diff --git a/tests/manual/polarcharttest/mainwindow.cpp b/tests/manual/polarcharttest/mainwindow.cpp
index cf825501..c8ae0ea8 100644
--- a/tests/manual/polarcharttest/mainwindow.cpp
+++ b/tests/manual/polarcharttest/mainwindow.cpp
@@ -52,6 +52,8 @@ MainWindow::MainWindow(QWidget *parent) :
m_titleVisible(true),
m_gridVisible(true),
m_arrowVisible(true),
+ m_minorGridVisible(true),
+ m_minorArrowVisible(true),
m_angularShadesBrush(new QBrush(Qt::NoBrush)),
m_radialShadesBrush(new QBrush(Qt::NoBrush)),
m_labelBrush(new QBrush(Qt::black)),
@@ -62,6 +64,7 @@ MainWindow::MainWindow(QWidget *parent) :
m_radialShadesPen(new QPen(Qt::NoPen)),
m_gridPen(new QPen(QRgb(0x010101))), // Note: Pure black is default color, so it gets overridden by
m_arrowPen(new QPen(QRgb(0x010101))), // default theme if set to that initially. This is an example of workaround.
+ m_minorGridPen(new QPen(QBrush(QRgb(0x010101)), 1, Qt::DashLine)),
m_backgroundPen(new QPen(Qt::NoPen)),
m_plotAreaBackgroundPen(new QPen(Qt::NoPen)),
m_labelFormat(QString("%.2f")),
@@ -126,6 +129,8 @@ MainWindow::MainWindow(QWidget *parent) :
connect(ui->angularTicksSpin, SIGNAL(valueChanged(int)), this, SLOT(angularTicksChanged(int)));
connect(ui->radialTicksSpin, SIGNAL(valueChanged(int)), this, SLOT(radialTicksChanged(int)));
+ connect(ui->angularMinorTicksSpin, SIGNAL(valueChanged(int)), this, SLOT(angularMinorTicksChanged(int)));
+ connect(ui->radialMinorTicksSpin, SIGNAL(valueChanged(int)), this, SLOT(radialMinorTicksChanged(int)));
connect(ui->anglesSpin, SIGNAL(valueChanged(int)), this, SLOT(anglesChanged(int)));
connect(ui->radialMinSpin, SIGNAL(valueChanged(double)), this, SLOT(radialMinChanged(double)));
connect(ui->radialMaxSpin, SIGNAL(valueChanged(double)), this, SLOT(radialMaxChanged(double)));
@@ -142,6 +147,7 @@ MainWindow::MainWindow(QWidget *parent) :
connect(ui->titleFontSizeSpin, SIGNAL(valueChanged(int)), this, SLOT(titleFontSizeChanged(int)));
connect(ui->titleComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(titleIndexChanged(int)));
connect(ui->gridComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(gridIndexChanged(int)));
+ connect(ui->minorGridComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(minorGridIndexChanged(int)));
connect(ui->arrowComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(arrowIndexChanged(int)));
connect(ui->logBaseSpin, SIGNAL(valueChanged(double)), this, SLOT(logBaseChanged(double)));
connect(ui->angularAxisComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(angularAxisIndexChanged(int)));
@@ -439,6 +445,8 @@ void MainWindow::setAngularAxis(MainWindow::AxisMode mode)
m_angularAxis->setGridLineVisible(m_gridVisible);
m_angularAxis->setLinePen(*m_arrowPen);
m_angularAxis->setLineVisible(m_arrowVisible);
+ m_angularAxis->setMinorGridLinePen(*m_minorGridPen);
+ m_angularAxis->setMinorGridLineVisible(m_minorGridVisible);
m_chart->addAxis(m_angularAxis, QPolarChart::PolarOrientationAngular);
@@ -507,6 +515,8 @@ void MainWindow::setRadialAxis(MainWindow::AxisMode mode)
m_radialAxis->setGridLineVisible(m_gridVisible);
m_radialAxis->setLinePen(*m_arrowPen);
m_radialAxis->setLineVisible(m_arrowVisible);
+ m_radialAxis->setMinorGridLinePen(*m_minorGridPen);
+ m_radialAxis->setMinorGridLineVisible(m_minorGridVisible);
m_chart->addAxis(m_radialAxis, QPolarChart::PolarOrientationRadial);
@@ -572,6 +582,22 @@ void MainWindow::radialTicksChanged(int value)
static_cast<QDateTimeAxis *>(m_radialAxis)->setTickCount(m_radialTickCount);
}
+void MainWindow::angularMinorTicksChanged(int value)
+{
+ // Minor tick valid only for QValueAxis
+ m_angularMinorTickCount = value;
+ if (m_angularAxisMode == AxisModeValue)
+ static_cast<QValueAxis *>(m_angularAxis)->setMinorTickCount(m_angularMinorTickCount);
+}
+
+void MainWindow::radialMinorTicksChanged(int value)
+{
+ // Minor tick valid only for QValueAxis
+ m_radialMinorTickCount = value;
+ if (m_radialAxisMode == AxisModeValue)
+ static_cast<QValueAxis *>(m_radialAxis)->setMinorTickCount(m_radialMinorTickCount);
+}
+
void MainWindow::anglesChanged(int value)
{
m_labelsAngle = value;
@@ -860,6 +886,36 @@ void MainWindow::gridIndexChanged(int index)
m_radialAxis->setGridLineVisible(m_gridVisible);
}
+void MainWindow::minorGridIndexChanged(int index)
+{
+ delete m_minorGridPen;
+
+ switch (index) {
+ case 0:
+ m_minorGridPen = new QPen(Qt::NoPen);
+ m_minorGridVisible = false;
+ break;
+ case 1:
+ m_minorGridPen = new QPen(Qt::black);
+ m_minorGridPen->setStyle(Qt::DashLine);
+ m_minorGridVisible = true;
+ break;
+ case 2:
+ m_minorGridPen = new QPen(Qt::green);
+ m_minorGridPen->setStyle(Qt::DotLine);
+ m_minorGridPen->setWidth(1);
+ m_minorGridVisible = true;
+ break;
+ default:
+ break;
+ }
+
+ m_angularAxis->setMinorGridLinePen(*m_minorGridPen);
+ m_angularAxis->setMinorGridLineVisible(m_minorGridVisible);
+ m_radialAxis->setMinorGridLinePen(*m_minorGridPen);
+ m_radialAxis->setMinorGridLineVisible(m_minorGridVisible);
+}
+
void MainWindow::arrowIndexChanged(int index)
{
delete m_arrowPen;
@@ -913,6 +969,7 @@ void MainWindow::angularAxisIndexChanged(int index)
break;
case 1:
setAngularAxis(AxisModeValue);
+ angularMinorTicksChanged(ui->angularMinorTicksSpin->value());
break;
case 2:
setAngularAxis(AxisModeLogValue);
@@ -936,6 +993,7 @@ void MainWindow::radialAxisIndexChanged(int index)
break;
case 1:
setRadialAxis(AxisModeValue);
+ radialMinorTicksChanged(ui->radialMinorTicksSpin->value());
break;
case 2:
setRadialAxis(AxisModeLogValue);
diff --git a/tests/manual/polarcharttest/mainwindow.h b/tests/manual/polarcharttest/mainwindow.h
index 0f813fe4..d267481e 100644
--- a/tests/manual/polarcharttest/mainwindow.h
+++ b/tests/manual/polarcharttest/mainwindow.h
@@ -51,6 +51,8 @@ public:
public slots:
void angularTicksChanged(int value);
void radialTicksChanged(int value);
+ void angularMinorTicksChanged(int value);
+ void radialMinorTicksChanged(int value);
void anglesChanged(int value);
void angularMinChanged(double value);
void angularMaxChanged(double value);
@@ -67,6 +69,7 @@ public slots:
void titleFontChanged(const QFont &font);
void titleFontSizeChanged(int value);
void gridIndexChanged(int index);
+ void minorGridIndexChanged(int index);
void arrowIndexChanged(int index);
void angularRangeChanged(qreal min, qreal max);
void radialRangeChanged(qreal min, qreal max);
@@ -109,6 +112,8 @@ private:
int m_angularTickCount;
int m_radialTickCount;
+ int m_angularMinorTickCount;
+ int m_radialMinorTickCount;
qreal m_labelsAngle;
qreal m_angularMin;
qreal m_angularMax;
@@ -120,6 +125,8 @@ private:
bool m_titleVisible;
bool m_gridVisible;
bool m_arrowVisible;
+ bool m_minorGridVisible;
+ bool m_minorArrowVisible;
QBrush *m_angularShadesBrush;
QBrush *m_radialShadesBrush;
QBrush *m_labelBrush;
@@ -130,6 +137,7 @@ private:
QPen *m_radialShadesPen;
QPen *m_gridPen;
QPen *m_arrowPen;
+ QPen *m_minorGridPen;
QPen *m_backgroundPen;
QPen *m_plotAreaBackgroundPen;
QString m_labelFormat;
diff --git a/tests/manual/polarcharttest/mainwindow.ui b/tests/manual/polarcharttest/mainwindow.ui
index cc4b1994..58ee203c 100644
--- a/tests/manual/polarcharttest/mainwindow.ui
+++ b/tests/manual/polarcharttest/mainwindow.ui
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>1193</width>
- <height>956</height>
+ <height>1004</height>
</rect>
</property>
<property name="windowTitle">
@@ -35,231 +35,13 @@
<property name="title">
<string>Settings</string>
</property>
- <widget class="QSpinBox" name="radialTicksSpin">
- <property name="geometry">
- <rect>
- <x>110</x>
- <y>90</y>
- <width>71</width>
- <height>22</height>
- </rect>
- </property>
- </widget>
- <widget class="QLabel" name="label">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>90</y>
- <width>101</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>Radial Tick count</string>
- </property>
- </widget>
- <widget class="QLabel" name="label_2">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>120</y>
- <width>101</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>Angular Tick count</string>
- </property>
- </widget>
- <widget class="QSpinBox" name="angularTicksSpin">
- <property name="geometry">
- <rect>
- <x>110</x>
- <y>120</y>
- <width>71</width>
- <height>22</height>
- </rect>
- </property>
- </widget>
- <widget class="QSpinBox" name="anglesSpin">
- <property name="geometry">
- <rect>
- <x>110</x>
- <y>150</y>
- <width>71</width>
- <height>22</height>
- </rect>
- </property>
- <property name="minimum">
- <number>-9999</number>
- </property>
- <property name="maximum">
- <number>9999</number>
- </property>
- <property name="singleStep">
- <number>5</number>
- </property>
- </widget>
- <widget class="QLabel" name="label_3">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>150</y>
- <width>101</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>Label angles</string>
- </property>
- </widget>
- <widget class="QLabel" name="label_4">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>180</y>
- <width>101</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>Angular min</string>
- </property>
- </widget>
- <widget class="QLabel" name="label_5">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>210</y>
- <width>101</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>Angular max</string>
- </property>
- </widget>
- <widget class="QDoubleSpinBox" name="angularMinSpin">
- <property name="geometry">
- <rect>
- <x>90</x>
- <y>180</y>
- <width>91</width>
- <height>22</height>
- </rect>
- </property>
- <property name="decimals">
- <number>5</number>
- </property>
- <property name="minimum">
- <double>-999999999.000000000000000</double>
- </property>
- <property name="maximum">
- <double>999999999.000000000000000</double>
- </property>
- <property name="singleStep">
- <double>10.000000000000000</double>
- </property>
- </widget>
- <widget class="QDoubleSpinBox" name="angularMaxSpin">
- <property name="geometry">
- <rect>
- <x>90</x>
- <y>210</y>
- <width>91</width>
- <height>22</height>
- </rect>
- </property>
- <property name="decimals">
- <number>5</number>
- </property>
- <property name="minimum">
- <double>-999999999.000000000000000</double>
- </property>
- <property name="maximum">
- <double>999999999.000000000000000</double>
- </property>
- <property name="singleStep">
- <double>10.000000000000000</double>
- </property>
- </widget>
- <widget class="QDoubleSpinBox" name="radialMaxSpin">
- <property name="geometry">
- <rect>
- <x>90</x>
- <y>270</y>
- <width>91</width>
- <height>22</height>
- </rect>
- </property>
- <property name="decimals">
- <number>5</number>
- </property>
- <property name="minimum">
- <double>-999999999.000000000000000</double>
- </property>
- <property name="maximum">
- <double>999999999.000000000000000</double>
- </property>
- <property name="singleStep">
- <double>10.000000000000000</double>
- </property>
- </widget>
- <widget class="QDoubleSpinBox" name="radialMinSpin">
- <property name="geometry">
- <rect>
- <x>90</x>
- <y>240</y>
- <width>91</width>
- <height>22</height>
- </rect>
- </property>
- <property name="decimals">
- <number>5</number>
- </property>
- <property name="minimum">
- <double>-999999999.000000000000000</double>
- </property>
- <property name="maximum">
- <double>999999999.000000000000000</double>
- </property>
- <property name="singleStep">
- <double>10.000000000000000</double>
- </property>
- </widget>
- <widget class="QLabel" name="label_11">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>270</y>
- <width>101</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>Radial max</string>
- </property>
- </widget>
- <widget class="QLabel" name="label_12">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>240</y>
- <width>101</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>Radial min</string>
- </property>
- </widget>
<widget class="QComboBox" name="angularShadesComboBox">
<property name="geometry">
<rect>
<x>10</x>
- <y>300</y>
- <width>171</width>
- <height>22</height>
+ <y>313</y>
+ <width>187</width>
+ <height>20</height>
</rect>
</property>
<item>
@@ -282,9 +64,9 @@
<property name="geometry">
<rect>
<x>10</x>
- <y>330</y>
- <width>171</width>
- <height>22</height>
+ <y>339</y>
+ <width>175</width>
+ <height>20</height>
</rect>
</property>
<item>
@@ -303,75 +85,13 @@
</property>
</item>
</widget>
- <widget class="QLabel" name="label_13">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>360</y>
- <width>101</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>Label format</string>
- </property>
- </widget>
- <widget class="QLineEdit" name="labelFormatEdit">
- <property name="geometry">
- <rect>
- <x>100</x>
- <y>360</y>
- <width>81</width>
- <height>20</height>
- </rect>
- </property>
- </widget>
- <widget class="QLabel" name="label_14">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>390</y>
- <width>101</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>Label font size</string>
- </property>
- </widget>
- <widget class="QFontComboBox" name="labelFontComboBox">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>420</y>
- <width>171</width>
- <height>22</height>
- </rect>
- </property>
- </widget>
- <widget class="QSpinBox" name="labelFontSizeSpin">
- <property name="geometry">
- <rect>
- <x>100</x>
- <y>390</y>
- <width>81</width>
- <height>22</height>
- </rect>
- </property>
- <property name="minimum">
- <number>-100000</number>
- </property>
- <property name="maximum">
- <number>100000</number>
- </property>
- </widget>
<widget class="QComboBox" name="animationsComboBox">
<property name="geometry">
<rect>
<x>10</x>
- <y>480</y>
- <width>171</width>
- <height>22</height>
+ <y>471</y>
+ <width>104</width>
+ <height>20</height>
</rect>
</property>
<item>
@@ -399,9 +119,9 @@
<property name="geometry">
<rect>
<x>10</x>
- <y>450</y>
- <width>171</width>
- <height>22</height>
+ <y>445</y>
+ <width>134</width>
+ <height>20</height>
</rect>
</property>
<property name="currentIndex">
@@ -423,29 +143,13 @@
</property>
</item>
</widget>
- <widget class="QSpinBox" name="titleFontSizeSpin">
- <property name="geometry">
- <rect>
- <x>100</x>
- <y>510</y>
- <width>81</width>
- <height>22</height>
- </rect>
- </property>
- <property name="minimum">
- <number>-100000</number>
- </property>
- <property name="maximum">
- <number>100000</number>
- </property>
- </widget>
<widget class="QComboBox" name="titleComboBox">
<property name="geometry">
<rect>
<x>10</x>
- <y>570</y>
- <width>171</width>
- <height>22</height>
+ <y>551</y>
+ <width>130</width>
+ <height>20</height>
</rect>
</property>
<property name="sizePolicy">
@@ -483,36 +187,13 @@
</property>
</item>
</widget>
- <widget class="QFontComboBox" name="titleFontComboBox">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>540</y>
- <width>171</width>
- <height>22</height>
- </rect>
- </property>
- </widget>
- <widget class="QLabel" name="label_15">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>510</y>
- <width>101</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>Title font size</string>
- </property>
- </widget>
<widget class="QComboBox" name="gridComboBox">
<property name="geometry">
<rect>
<x>10</x>
- <y>600</y>
- <width>171</width>
- <height>22</height>
+ <y>577</y>
+ <width>104</width>
+ <height>20</height>
</rect>
</property>
<property name="sizePolicy">
@@ -544,9 +225,9 @@
<property name="geometry">
<rect>
<x>10</x>
- <y>630</y>
- <width>171</width>
- <height>22</height>
+ <y>603</y>
+ <width>114</width>
+ <height>20</height>
</rect>
</property>
<property name="sizePolicy">
@@ -578,9 +259,9 @@
<property name="geometry">
<rect>
<x>10</x>
- <y>20</y>
- <width>171</width>
- <height>22</height>
+ <y>23</y>
+ <width>134</width>
+ <height>20</height>
</rect>
</property>
<property name="currentIndex">
@@ -616,9 +297,9 @@
<property name="geometry">
<rect>
<x>10</x>
- <y>50</y>
- <width>171</width>
- <height>22</height>
+ <y>49</y>
+ <width>126</width>
+ <height>20</height>
</rect>
</property>
<property name="currentIndex">
@@ -650,188 +331,13 @@
</property>
</item>
</widget>
- <widget class="QLabel" name="label_16">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>660</y>
- <width>101</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>Log Base</string>
- </property>
- </widget>
- <widget class="QDoubleSpinBox" name="logBaseSpin">
- <property name="geometry">
- <rect>
- <x>90</x>
- <y>660</y>
- <width>91</width>
- <height>22</height>
- </rect>
- </property>
- <property name="decimals">
- <number>5</number>
- </property>
- <property name="minimum">
- <double>-999999999.000000000000000</double>
- </property>
- <property name="maximum">
- <double>999999999.000000000000000</double>
- </property>
- <property name="value">
- <double>8.000000000000000</double>
- </property>
- </widget>
- <widget class="QCheckBox" name="niceNumbersCheckBox">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>690</y>
- <width>91</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>Nice Numbers</string>
- </property>
- </widget>
- <widget class="QLineEdit" name="dateFormatEdit">
- <property name="geometry">
- <rect>
- <x>100</x>
- <y>710</y>
- <width>81</width>
- <height>20</height>
- </rect>
- </property>
- </widget>
- <widget class="QLabel" name="label_17">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>710</y>
- <width>101</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>DateTime format</string>
- </property>
- </widget>
- <widget class="QCheckBox" name="moreCategoriesCheckBox">
- <property name="geometry">
- <rect>
- <x>100</x>
- <y>690</y>
- <width>141</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>More Categories</string>
- </property>
- </widget>
- <widget class="QCheckBox" name="series1checkBox">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>730</y>
- <width>31</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>1</string>
- </property>
- </widget>
- <widget class="QCheckBox" name="series2checkBox">
- <property name="geometry">
- <rect>
- <x>40</x>
- <y>730</y>
- <width>31</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>2</string>
- </property>
- </widget>
- <widget class="QCheckBox" name="series3checkBox">
- <property name="geometry">
- <rect>
- <x>70</x>
- <y>730</y>
- <width>31</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>3</string>
- </property>
- </widget>
- <widget class="QCheckBox" name="series4checkBox">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>750</y>
- <width>31</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>4</string>
- </property>
- </widget>
- <widget class="QCheckBox" name="series5checkBox">
- <property name="geometry">
- <rect>
- <x>40</x>
- <y>750</y>
- <width>31</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>5</string>
- </property>
- </widget>
- <widget class="QCheckBox" name="series6checkBox">
- <property name="geometry">
- <rect>
- <x>70</x>
- <y>750</y>
- <width>31</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>6</string>
- </property>
- </widget>
- <widget class="QCheckBox" name="series7checkBox">
- <property name="geometry">
- <rect>
- <x>100</x>
- <y>740</y>
- <width>31</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>7</string>
- </property>
- </widget>
<widget class="QComboBox" name="themeComboBox">
<property name="geometry">
<rect>
<x>10</x>
- <y>770</y>
- <width>171</width>
- <height>22</height>
+ <y>814</y>
+ <width>131</width>
+ <height>20</height>
</rect>
</property>
<property name="sizePolicy">
@@ -888,8 +394,8 @@
<property name="geometry">
<rect>
<x>10</x>
- <y>800</y>
- <width>171</width>
+ <y>840</y>
+ <width>117</width>
<height>16</height>
</rect>
</property>
@@ -901,9 +407,9 @@
<property name="geometry">
<rect>
<x>10</x>
- <y>820</y>
- <width>171</width>
- <height>22</height>
+ <y>877</y>
+ <width>195</width>
+ <height>20</height>
</rect>
</property>
<property name="sizePolicy">
@@ -935,9 +441,9 @@
<property name="geometry">
<rect>
<x>10</x>
- <y>850</y>
- <width>171</width>
- <height>22</height>
+ <y>903</y>
+ <width>165</width>
+ <height>20</height>
</rect>
</property>
<property name="sizePolicy">
@@ -965,6 +471,434 @@
</property>
</item>
</widget>
+ <widget class="QWidget" name="layoutWidget">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>207</y>
+ <width>185</width>
+ <height>100</height>
+ </rect>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="2" column="1">
+ <widget class="QDoubleSpinBox" name="radialMinSpin">
+ <property name="decimals">
+ <number>5</number>
+ </property>
+ <property name="minimum">
+ <double>-999999999.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>999999999.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>10.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_11">
+ <property name="text">
+ <string>Radial max</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_12">
+ <property name="text">
+ <string>Radial min</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>Angular max</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QDoubleSpinBox" name="angularMinSpin">
+ <property name="decimals">
+ <number>5</number>
+ </property>
+ <property name="minimum">
+ <double>-999999999.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>999999999.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>10.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>Angular min</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QDoubleSpinBox" name="radialMaxSpin">
+ <property name="decimals">
+ <number>5</number>
+ </property>
+ <property name="minimum">
+ <double>-999999999.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>999999999.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>10.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QDoubleSpinBox" name="angularMaxSpin">
+ <property name="decimals">
+ <number>5</number>
+ </property>
+ <property name="minimum">
+ <double>-999999999.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>999999999.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>10.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="layoutWidget">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>365</y>
+ <width>210</width>
+ <height>74</height>
+ </rect>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_13">
+ <property name="text">
+ <string>Label format</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLineEdit" name="labelFormatEdit"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_14">
+ <property name="text">
+ <string>Label font size</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QSpinBox" name="labelFontSizeSpin">
+ <property name="minimum">
+ <number>-100000</number>
+ </property>
+ <property name="maximum">
+ <number>100000</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QFontComboBox" name="labelFontComboBox"/>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="layoutWidget">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>497</y>
+ <width>190</width>
+ <height>48</height>
+ </rect>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_4">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_15">
+ <property name="text">
+ <string>Title font size</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QSpinBox" name="titleFontSizeSpin">
+ <property name="minimum">
+ <number>-100000</number>
+ </property>
+ <property name="maximum">
+ <number>100000</number>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="2">
+ <widget class="QFontComboBox" name="titleFontComboBox"/>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="layoutWidget">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>655</y>
+ <width>168</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QLabel" name="label_16">
+ <property name="text">
+ <string>Log Base</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QDoubleSpinBox" name="logBaseSpin">
+ <property name="decimals">
+ <number>5</number>
+ </property>
+ <property name="minimum">
+ <double>-999999999.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>999999999.000000000000000</double>
+ </property>
+ <property name="value">
+ <double>8.000000000000000</double>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="layoutWidget">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>692</y>
+ <width>198</width>
+ <height>19</height>
+ </rect>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <widget class="QCheckBox" name="niceNumbersCheckBox">
+ <property name="text">
+ <string>Nice Numbers</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="moreCategoriesCheckBox">
+ <property name="text">
+ <string>More Categories</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="layoutWidget">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>729</y>
+ <width>221</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QLabel" name="label_17">
+ <property name="text">
+ <string>DateTime format</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="dateFormatEdit"/>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="layoutWidget">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>766</y>
+ <width>136</width>
+ <height>42</height>
+ </rect>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_5">
+ <item row="0" column="0">
+ <widget class="QCheckBox" name="series1checkBox">
+ <property name="text">
+ <string>1</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QCheckBox" name="series2checkBox">
+ <property name="text">
+ <string>2</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QCheckBox" name="series3checkBox">
+ <property name="text">
+ <string>3</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3" rowspan="2">
+ <widget class="QCheckBox" name="series7checkBox">
+ <property name="text">
+ <string>7</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QCheckBox" name="series4checkBox">
+ <property name="text">
+ <string>4</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QCheckBox" name="series5checkBox">
+ <property name="text">
+ <string>5</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QCheckBox" name="series6checkBox">
+ <property name="text">
+ <string>6</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="layoutWidget">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>75</y>
+ <width>178</width>
+ <height>126</height>
+ </rect>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Angular Tick count</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QSpinBox" name="anglesSpin">
+ <property name="minimum">
+ <number>-9999</number>
+ </property>
+ <property name="maximum">
+ <number>9999</number>
+ </property>
+ <property name="singleStep">
+ <number>5</number>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QSpinBox" name="radialMinorTicksSpin"/>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Radial Tick count</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string>Angular Minor Tick count</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QSpinBox" name="radialTicksSpin"/>
+ </item>
+ <item row="4" column="1">
+ <widget class="QSpinBox" name="angularMinorTicksSpin"/>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>Radial Minor Tick count</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QSpinBox" name="angularTicksSpin"/>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Label angles</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QComboBox" name="minorGridComboBox">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>630</y>
+ <width>141</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="currentIndex">
+ <number>1</number>
+ </property>
+ <item>
+ <property name="text">
+ <string>Invisible minor grid</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Black minor grid</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Custom minor grid pen</string>
+ </property>
+ </item>
+ </widget>
</widget>
</item>
</layout>
diff --git a/tests/manual/qmlchartproperties/qml/qmlchartproperties/ChartEditorAxis.qml b/tests/manual/qmlchartproperties/qml/qmlchartproperties/ChartEditorAxis.qml
index dedd14d9..67f7de2a 100644
--- a/tests/manual/qmlchartproperties/qml/qmlchartproperties/ChartEditorAxis.qml
+++ b/tests/manual/qmlchartproperties/qml/qmlchartproperties/ChartEditorAxis.qml
@@ -61,6 +61,10 @@ Row {
onClicked: axis.gridVisible = !axis.gridVisible;
}
Button {
+ text: "axis minor grid visible"
+ onClicked: axis.minorGridVisible = !axis.minorGridVisible;
+ }
+ Button {
text: "axis shades visible"
onClicked: axis.shadesVisible = !axis.shadesVisible;
}
@@ -102,10 +106,17 @@ Row {
}
Button {
text: "axis tick count -"
-
onClicked: axis.tickCount--;
}
Button {
+ text: "axis minor tick count +"
+ onClicked: axis.minorTickCount++;
+ }
+ Button {
+ text: "axis minor tick count -"
+ onClicked: axis.minorTickCount--;
+ }
+ Button {
text: "axis reverse"
onClicked: axis.reverse = !axis.reverse;
}