diff options
Diffstat (limited to 'src/charts/axis/cartesianchartaxis.cpp')
-rw-r--r-- | src/charts/axis/cartesianchartaxis.cpp | 50 |
1 files changed, 41 insertions, 9 deletions
diff --git a/src/charts/axis/cartesianchartaxis.cpp b/src/charts/axis/cartesianchartaxis.cpp index 34e618c2..935a9601 100644 --- a/src/charts/axis/cartesianchartaxis.cpp +++ b/src/charts/axis/cartesianchartaxis.cpp @@ -81,17 +81,25 @@ void CartesianChartAxis::createItems(int count) for (int i = 0; i < count; ++i) { QGraphicsLineItem *arrow = new QGraphicsLineItem(this); QGraphicsLineItem *grid = new QGraphicsLineItem(this); - QGraphicsTextItem *label = axis()->type() == QAbstractAxis::AxisTypeValue - ? new ValueAxisLabel(this) - : new QGraphicsTextItem(this); - if (axis()->type() == QAbstractAxis::AxisTypeValue) { - ValueAxisLabel *valueLabel = static_cast<ValueAxisLabel *>(label); - connect(valueLabel, &ValueAxisLabel::valueChanged, - this, &ChartAxisElement::labelEdited); - // only QValueAxis labels editable for now + QGraphicsTextItem *label; + if (axis()->type() == QtCharts::QAbstractAxis::AxisTypeValue) { + label = new ValueAxisLabel(this); + connect(static_cast<ValueAxisLabel *>(label), &ValueAxisLabel::valueChanged, + this, &ChartAxisElement::valueLabelEdited); if (labelsEditable()) - valueLabel->setEditable(true); + static_cast<ValueAxisLabel *>(label)->setEditable(true); + } else if (axis()->type() == QtCharts::QAbstractAxis::AxisTypeDateTime) { + DateTimeAxisLabel *dateTimeLabel = new DateTimeAxisLabel(this); + label = dateTimeLabel; + connect(dateTimeLabel, &DateTimeAxisLabel::dateTimeChanged, + this, &ChartAxisElement::dateTimeLabelEdited); + if (labelsEditable()) + dateTimeLabel->setEditable(true); + dateTimeLabel->setFormat(static_cast<QDateTimeAxis*>(axis())->format()); + } else { + label = new QGraphicsTextItem(this); } + label->document()->setDocumentMargin(ChartPresenter::textMargin()); arrow->setPen(axis()->linePen()); grid->setPen(axis()->gridLinePen()); @@ -281,6 +289,18 @@ QSizeF CartesianChartAxis::sizeHint(Qt::SizeHint which, const QSizeF &constraint return QSizeF(); } +void CartesianChartAxis::setDateTimeLabelsFormat(const QString &format) +{ + if (max() <= min() + || layout().size() < 1 + || axis()->type() != QAbstractAxis::AxisTypeDateTime) { + return; + } + + for (int i = 0; i < layout().size(); i++) + static_cast<DateTimeAxisLabel *>(labelItems().at(i))->setFormat(format); +} + void CartesianChartAxis::handleArrowPenChanged(const QPen &pen) { foreach (QGraphicsItem *item, arrowItems()) @@ -366,6 +386,18 @@ void CartesianChartAxis::updateLabelsValues(QValueAxis *axis) } } +void CartesianChartAxis::updateLabelsDateTimes() +{ + if (max() <= min() || layout().size() < 1) + return; + + for (int i = 0; i < layout().size(); i++) { + qreal value = min() + (i * (max() - min()) / (layout().size() - 1)); + static_cast<DateTimeAxisLabel *>(labelItems().at(i))->setValue( + QDateTime::fromMSecsSinceEpoch(value)); + } +} + QT_CHARTS_END_NAMESPACE #include "moc_cartesianchartaxis_p.cpp" |