##// END OF EJS Templates
Added possibility to set labels position for QCategoryAxis...
Added possibility to set labels position for QCategoryAxis The position of the labels in QCategyAxis can now be set to center of the category or to the high end of the category. The first and the last labels may overlap with other axes labels when positioned on value. Change-Id: Ide0f12b723ffabf6682001e03ea5080f9642da22 Task-number: QTRD-1715 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>

File last commit:

r2780:740f4f94adf8
r2780:740f4f94adf8
Show More
declarativecategoryaxis.h
93 lines | 2.9 KiB | text/x-c | CLexer
/ src / chartsqml2 / declarativecategoryaxis.h
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd
** All rights reserved.
** For any questions to The Qt Company, please use contact form at http://qt.io
**
** This file is part of the Qt Charts module.
**
** Licensees holding valid commercial license for Qt may use this file in
** accordance with the Qt License Agreement provided with the Software
** or, alternatively, in accordance with the terms contained in a written
** agreement between you and The Qt Company.
**
** If you have questions regarding the use of this file, please use
** contact form at http://qt.io
**
****************************************************************************/
#ifndef DECLARATIVECATEGORYAXIS_H
#define DECLARATIVECATEGORYAXIS_H
#include <QtCharts/QCategoryAxis>
#include <QtQml/QQmlListProperty>
#include <QtQml/QQmlParserStatus>
QT_CHARTS_BEGIN_NAMESPACE
class DeclarativeCategoryRange : public QObject
{
Q_OBJECT
Q_PROPERTY(qreal endValue READ endValue WRITE setEndValue)
Q_PROPERTY(QString label READ label WRITE setLabel)
public:
explicit DeclarativeCategoryRange(QObject *parent = 0);
qreal endValue() { return m_endValue; }
void setEndValue(qreal endValue) { m_endValue = endValue; }
QString label() { return m_label; }
void setLabel(QString label) { m_label = label; }
private:
qreal m_endValue;
QString m_label;
};
class DeclarativeCategoryAxis : public QCategoryAxis, public QQmlParserStatus
{
Q_OBJECT
Q_INTERFACES(QQmlParserStatus)
Q_PROPERTY(QQmlListProperty<QObject> axisChildren READ axisChildren)
Q_CLASSINFO("DefaultProperty", "axisChildren")
Q_PROPERTY(AxisLabelsPosition labelsPosition READ labelsPosition WRITE setLabelsPosition NOTIFY labelsPositionChanged REVISION 1)
Q_ENUMS(AxisLabelsPosition)
public:
// duplicating enums from QChart to make the QML api namings 1-to-1 with the C++ api
enum AxisLabelsPosition {
AxisLabelsPositionCenter = 0x0,
AxisLabelsPositionOnValue = 0x1
};
explicit DeclarativeCategoryAxis(QObject *parent = 0);
QQmlListProperty<QObject> axisChildren();
public: // from QDeclarativeParserStatus
void classBegin();
void componentComplete();
public:
AxisLabelsPosition labelsPosition() const;
void setLabelsPosition(AxisLabelsPosition position);
Q_SIGNALS:
Q_REVISION(1) void labelsPositionChanged(AxisLabelsPosition position);
public Q_SLOTS:
Q_INVOKABLE void append(const QString &label, qreal categoryEndValue);
Q_INVOKABLE void remove(const QString &label);
Q_INVOKABLE void replace(const QString &oldLabel, const QString &newLabel);
static void appendAxisChildren(QQmlListProperty<QObject> *list, QObject *element);
private:
static bool endValueLessThan(const QPair<QString, qreal> &value1, const QPair<QString, qreal> &value2);
private:
AxisLabelsPosition m_labelsPosition;
};
QT_CHARTS_END_NAMESPACE
#endif // DECLARATIVECATEGORYAXIS_H