##// END OF EJS Templates
Fix color setting...
Fix color setting For some elements the brush and pen colors were set so that the default brush and pen style was used. This resulted wrong pattern for the colors. Change-Id: Ie67d954f1e6e91201a034921433e0bccf6745159 Task-number: QTRD-3736 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>

File last commit:

r2845:ae12522d475c
r2852:5f71da41b84f
Show More
chartvalueaxisy.cpp
141 lines | 4.5 KiB | text/x-c | CppLexer
/******************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the Qt Charts module.
**
** $QT_BEGIN_LICENSE:COMM$
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** $QT_END_LICENSE$
**
******************************************************************************/
#include <private/chartvalueaxisy_p.h>
#include <QtCharts/QAbstractAxis>
#include <private/chartpresenter_p.h>
#include <QtCharts/QValueAxis>
#include <private/abstractchartlayout_p.h>
#include <QtWidgets/QGraphicsLayout>
#include <QtCore/QtMath>
#include <QtCore/QDebug>
QT_CHARTS_BEGIN_NAMESPACE
ChartValueAxisY::ChartValueAxisY(QValueAxis *axis, QGraphicsItem *item)
: VerticalAxis(axis, 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)));
}
ChartValueAxisY::~ChartValueAxisY()
{
}
QVector<qreal> ChartValueAxisY::calculateLayout() const
{
int tickCount = m_axis->tickCount();
Q_ASSERT(tickCount >= 2);
QVector<qreal> points;
points.resize(tickCount);
const QRectF &gridRect = gridGeometry();
const qreal deltaY = gridRect.height() / (qreal(tickCount) - 1.0);
for (int i = 0; i < tickCount; ++i)
points[i] = qreal(i) * -deltaY + gridRect.bottom();
return points;
}
void ChartValueAxisY::updateGeometry()
{
const QVector<qreal> &layout = ChartAxisElement::layout();
if (layout.isEmpty())
return;
setLabels(createValueLabels(min(),max(),layout.size(),m_axis->labelFormat()));
VerticalAxis::updateGeometry();
}
void ChartValueAxisY::handleTickCountChanged(int tick)
{
Q_UNUSED(tick);
QGraphicsLayoutItem::updateGeometry();
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);
QGraphicsLayoutItem::updateGeometry();
if(presenter()) presenter()->layout()->invalidate();
}
QSizeF ChartValueAxisY::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
{
Q_UNUSED(constraint)
QSizeF sh;
QSizeF base = VerticalAxis::sizeHint(which, constraint);
QStringList ticksList = createValueLabels(min(),max(),m_axis->tickCount(),m_axis->labelFormat());
qreal width = 0;
// Height of vertical axis sizeHint indicates the maximum distance labels can extend past
// first and last ticks. Base height is irrelevant.
qreal height = 0;
switch (which) {
case Qt::MinimumSize: {
QRectF boundingRect = ChartPresenter::textBoundingRect(axis()->labelsFont(),
QStringLiteral("..."),
axis()->labelsAngle());
width = boundingRect.width() + labelPadding() + base.width() + 1.0;
height = boundingRect.height() / 2.0;
sh = QSizeF(width, height);
break;
}
case Qt::PreferredSize: {
qreal labelWidth = 0.0;
qreal firstHeight = -1.0;
foreach (const QString& s, ticksList) {
QRectF rect = ChartPresenter::textBoundingRect(axis()->labelsFont(), s, axis()->labelsAngle());
labelWidth = qMax(rect.width(), labelWidth);
height = rect.height();
if (firstHeight < 0.0)
firstHeight = height;
}
width = labelWidth + labelPadding() + base.width() + 2.0; //two pixels of tolerance
height = qMax(height, firstHeight) / 2.0;
sh = QSizeF(width, height);
break;
}
default:
break;
}
return sh;
}
#include "moc_chartvalueaxisy_p.cpp"
QT_CHARTS_END_NAMESPACE