From 27241b083df419f3a2de928c1d3f5dd8f6459030 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 15 Nov 2013 10:39:15 +0200 Subject: Enable giving series and proxies as child items in QML MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTRD-2359 Change-Id: I37558b169bb60ee90993c1a8703da0c6745a9db0 Reviewed-by: Mika Salmela Reviewed-by: Pasi Keränen --- examples/qmlbars/qml/qmlbars/data.qml | 30 ------- examples/qmlbars/qml/qmlbars/main.qml | 38 +++++++-- examples/qmlscatter/qml/qmlscatter/data.qml | 18 +---- examples/qmlscatter/qml/qmlscatter/main.qml | 15 +++- examples/qmlsurface/qml/qmlsurface/data.qml | 32 -------- examples/qmlsurface/qml/qmlsurface/main.qml | 44 ++++++++--- .../datavisualizationqml2.pro | 6 +- .../datavisualizationqml2_plugin.cpp | 16 +++- .../datavisualizationqml2_plugin.h | 4 + src/datavisualizationqml2/declarativebars_p.h | 1 + src/datavisualizationqml2/declarativescatter_p.h | 1 + src/datavisualizationqml2/declarativeseries.cpp | 92 ++++++++++++++++++++++ src/datavisualizationqml2/declarativeseries_p.h | 81 +++++++++++++++++++ src/datavisualizationqml2/declarativesurface_p.h | 1 + 14 files changed, 273 insertions(+), 106 deletions(-) create mode 100644 src/datavisualizationqml2/declarativeseries.cpp create mode 100644 src/datavisualizationqml2/declarativeseries_p.h diff --git a/examples/qmlbars/qml/qmlbars/data.qml b/examples/qmlbars/qml/qmlbars/data.qml index 522926e8..64df4c6a 100644 --- a/examples/qmlbars/qml/qmlbars/data.qml +++ b/examples/qmlbars/qml/qmlbars/data.qml @@ -22,11 +22,7 @@ import QtDataVisualization 1.0 Item { property alias model: dataModel property alias mapping: valueMapping - property alias proxy: modelProxy - property alias series: barSeries property alias secondaryMapping: secondaryMapping - property alias secondaryProxy: secondaryProxy - property alias secondarySeries: secondarySeries //! [1] BarDataMapping { @@ -36,13 +32,6 @@ Item { valueRole: "expenses" } //! [1] - //! [2] - ItemModelBarDataProxy { - id: modelProxy - activeMapping: valueMapping - itemModel: dataModel - } - //! [2] BarDataMapping { id: secondaryMapping @@ -51,25 +40,6 @@ Item { valueRole: "income" } - ItemModelBarDataProxy { - id: secondaryProxy - activeMapping: secondaryMapping - itemModel: dataModel - } - - Bar3DSeries { - id: barSeries - dataProxy: modelProxy - itemLabelFormat: "@valueTitle for @colLabel, @rowLabel: @valueLabel" - } - - Bar3DSeries { - id: secondarySeries - visible: false - dataProxy: secondaryProxy - itemLabelFormat: "@valueTitle for @colLabel, @rowLabel: @valueLabel" - } - //! [0] ListModel { id: dataModel diff --git a/examples/qmlbars/qml/qmlbars/main.qml b/examples/qmlbars/qml/qmlbars/main.qml index 4346f392..9432d44b 100644 --- a/examples/qmlbars/qml/qmlbars/main.qml +++ b/examples/qmlbars/qml/qmlbars/main.qml @@ -56,12 +56,34 @@ Item { scene.activeCamera.cameraPreset: AbstractGraph3D.CameraPresetIsometricLeftHigh columnAxis: graphAxes.column valueAxis: graphAxes.expenses - seriesList: [graphData.series, graphData.secondarySeries] + + Bar3DSeries { + id: barSeries + itemLabelFormat: "@valueTitle for @colLabel, @rowLabel: @valueLabel" + + ItemModelBarDataProxy { + id: modelProxy + activeMapping: graphData.mapping + itemModel: graphData.model + } + } + + Bar3DSeries { + id: secondarySeries + visible: false + itemLabelFormat: "@valueTitle for @colLabel, @rowLabel: @valueLabel" + + ItemModelBarDataProxy { + id: secondaryProxy + activeMapping: graphData.secondaryMapping + itemModel: graphData.model + } + } onSelectedBarChanged: { // Set tableView current row to selected bar - var rowRole = graphData.proxy.rowLabels[position.x]; - var colRole = graphData.proxy.columnLabels[position.y]; + var rowRole = modelProxy.rowLabels[position.x]; + var colRole = modelProxy.columnLabels[position.y]; var currentRow = tableView.currentRow if (currentRow === -1 || rowRole !== graphData.model.get(currentRow).year || colRole !== graphData.model.get(currentRow).month) { @@ -92,19 +114,19 @@ Item { text: "Show Income" //! [0] onClicked: { - if (graphData.mapping.valueRole === "expenses" && !graphData.secondarySeries.visible) { + if (graphData.mapping.valueRole === "expenses" && !secondarySeries.visible) { // Change mapping to change series data graphData.mapping.valueRole = "income" text = "Show Both" testGraph.valueAxis = graphAxes.income } else if (graphData.mapping.valueRole === "income"){ // Show both data set in separate series - graphData.secondarySeries.visible = true + secondarySeries.visible = true graphData.mapping.valueRole = "expenses" text = "Show Expenses" testGraph.valueAxis = graphAxes.income } else { - graphData.secondarySeries.visible = false + secondarySeries.visible = false text = "Show Income" testGraph.valueAxis = graphAxes.expenses } @@ -168,8 +190,8 @@ Item { //! [2] onCurrentRowChanged: { - var rowIndex = graphData.proxy.activeMapping.rowCategoryIndex(graphData.model.get(currentRow).year) - var colIndex = graphData.proxy.activeMapping.columnCategoryIndex(graphData.model.get(currentRow).month) + var rowIndex = modelProxy.activeMapping.rowCategoryIndex(graphData.model.get(currentRow).year) + var colIndex = modelProxy.activeMapping.columnCategoryIndex(graphData.model.get(currentRow).month) testGraph.selectedBar = Qt.point(rowIndex, colIndex) } //! [2] diff --git a/examples/qmlscatter/qml/qmlscatter/data.qml b/examples/qmlscatter/qml/qmlscatter/data.qml index 74993135..523aceb0 100644 --- a/examples/qmlscatter/qml/qmlscatter/data.qml +++ b/examples/qmlscatter/qml/qmlscatter/data.qml @@ -21,8 +21,8 @@ import QtDataVisualization 1.0 Item { //! [3] - property alias proxy: modelProxy - property alias series: scatterSeries + property alias mapping: scatterMapping + property alias model: dataModel //! [3] //! [1] @@ -34,20 +34,6 @@ Item { } //! [1] - //! [2] - ItemModelScatterDataProxy { - id: modelProxy - activeMapping: scatterMapping - itemModel: dataModel - } - //! [2] - - Scatter3DSeries { - id: scatterSeries - dataProxy: modelProxy - itemLabelFormat: "X:@xLabel Y:@yLabel Z:@zLabel" - } - //! [0] ListModel { id: dataModel diff --git a/examples/qmlscatter/qml/qmlscatter/main.qml b/examples/qmlscatter/qml/qmlscatter/main.qml index 1e80b52a..6cae72f8 100644 --- a/examples/qmlscatter/qml/qmlscatter/main.qml +++ b/examples/qmlscatter/qml/qmlscatter/main.qml @@ -56,9 +56,6 @@ Item { theme: AbstractGraph3D.ThemeIsabelle shadowQuality: AbstractGraph3D.ShadowQualitySoftLow //! [3] - //! [5] - seriesList: [graphData.series] - //! [5] //! [6] axisX.segmentCount: 3 axisX.subSegmentCount: 2 @@ -70,6 +67,18 @@ Item { axisY.subSegmentCount: 2 axisY.labelFormat: "%.2f" //! [6] + //! [5] + Scatter3DSeries { + id: scatterSeries + itemLabelFormat: "X:@xLabel Y:@yLabel Z:@zLabel" + + ItemModelScatterDataProxy { + activeMapping: graphData.mapping + itemModel: graphData.model + } + } + + //! [5] } } diff --git a/examples/qmlsurface/qml/qmlsurface/data.qml b/examples/qmlsurface/qml/qmlsurface/data.qml index 36c7671a..f9b008df 100644 --- a/examples/qmlsurface/qml/qmlsurface/data.qml +++ b/examples/qmlsurface/qml/qmlsurface/data.qml @@ -22,20 +22,6 @@ import QtDataVisualization 1.0 Item { property alias mapping: surfaceMapping property alias model: dataModel - property alias series: surfaceSeries - property alias heightSeries: heightSeries - - //! [0] - HeightMapSurfaceDataProxy { - id: heightMapProxy - heightMapFile: ":/heightmaps/image" - // We don't want the default data values set by heightmap proxy. - minZValue: 30 - maxZValue: 60 - minXValue: 67 - maxXValue: 97 - } - //! [0] //! [2] SurfaceDataMapping { @@ -46,24 +32,6 @@ Item { } //! [2] - //! [3] - ItemModelSurfaceDataProxy { - id: modelProxy - activeMapping: surfaceMapping - itemModel: dataModel - } - //! [3] - - Surface3DSeries { - id: surfaceSeries - dataProxy: modelProxy - } - - Surface3DSeries { - id: heightSeries - dataProxy: heightMapProxy - } - //! [1] ListModel { id: dataModel diff --git a/examples/qmlsurface/qml/qmlsurface/main.qml b/examples/qmlsurface/qml/qmlsurface/main.qml index f91b6a76..2b44b1d4 100644 --- a/examples/qmlsurface/qml/qmlsurface/main.qml +++ b/examples/qmlsurface/qml/qmlsurface/main.qml @@ -57,7 +57,6 @@ Item { font.family: "STCaiyun" font.pointSize: 35 scene.activeCamera.cameraPreset: AbstractGraph3D.CameraPresetIsometricLeft - seriesList: [surfaceData.series] axisY.min: 0.0 axisY.max: 500.0 axisX.segmentCount: 10 @@ -71,6 +70,15 @@ Item { axisY.labelFormat: "%i" gradient: surfaceGradient + Surface3DSeries { + id: surfaceSeries + + ItemModelSurfaceDataProxy { + activeMapping: surfaceData.mapping + itemModel: surfaceData.model + } + } + // Since flat is not supported on all platforms, and changes back to smooth // asynchronously on those platforms, handle button text on changed // signal handler rather than when we set the value. @@ -84,6 +92,20 @@ Item { } } + // TODO: Kept outside until surface supports multiple added series (QTRD-2579) + Surface3DSeries { + id: heightSeries + + HeightMapSurfaceDataProxy { + heightMapFile: ":/heightmaps/image" + // We don't want the default data values set by heightmap proxy. + minZValue: 30 + maxZValue: 60 + minXValue: 67 + maxXValue: 97 + } + } + NewButton { id: surfaceGridToggle anchors.top: parent.top @@ -110,12 +132,12 @@ Item { text: "Hide Surface" onClicked: { if (surfaceplot.seriesList[0].visible === true) { - surfaceData.series.visible = false; - surfaceData.heightSeries.visible = false; + surfaceSeries.visible = false; + heightSeries.visible = false; text = "Show Surface" } else { - surfaceData.series.visible = true; - surfaceData.heightSeries.visible = true; + surfaceSeries.visible = true; + heightSeries.visible = true; text = "Hide Surface" } } @@ -173,19 +195,19 @@ Item { id: seriesToggle anchors.top: gridToggle.bottom width: gridToggle.width - text: "Switch to Item Model Proxy" + text: "Switch to Item Model Series" //! [3] onClicked: { - if (surfaceplot.seriesList[0] === surfaceData.heightSeries) { + if (surfaceplot.seriesList[0] === heightSeries) { surfaceplot.axisY.max = 500.0 - surfaceplot.seriesList = [surfaceData.series] + surfaceplot.seriesList = [surfaceSeries] middleGradient.position = 0.25 - text = "Switch to Height Map Proxy" + text = "Switch to Height Map Series" } else { surfaceplot.axisY.max = 250.0 - surfaceplot.seriesList = [surfaceData.heightSeries] + surfaceplot.seriesList = [heightSeries] middleGradient.position = 0.55 - text = "Switch to Item Model Proxy" + text = "Switch to Item Model Series" } } //! [3] diff --git a/src/datavisualizationqml2/datavisualizationqml2.pro b/src/datavisualizationqml2/datavisualizationqml2.pro index db684988..073b1250 100644 --- a/src/datavisualizationqml2/datavisualizationqml2.pro +++ b/src/datavisualizationqml2/datavisualizationqml2.pro @@ -26,7 +26,8 @@ SOURCES += \ declarativesurface.cpp \ declarativesurfacerenderer.cpp \ abstractdeclarative.cpp \ - colorgradient.cpp + colorgradient.cpp \ + declarativeseries.cpp HEADERS += \ datavisualizationqml2_plugin.h \ @@ -37,7 +38,8 @@ HEADERS += \ declarativesurface_p.h \ declarativesurfacerenderer_p.h \ abstractdeclarative_p.h \ - colorgradient_p.h + colorgradient_p.h \ + declarativeseries_p.h OTHER_FILES = qmldir diff --git a/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp b/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp index 4e47ba53..7e7f636a 100644 --- a/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp +++ b/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp @@ -43,6 +43,14 @@ void Datavis3Dqml2Plugin::registerTypes(const char *uri) QLatin1String("Trying to create uncreatable: AbstractGraph3D.")); qmlRegisterUncreatableType(uri, 1, 0, "Scene3D", QLatin1String("Trying to create uncreatable: Scene3D.")); + qmlRegisterUncreatableType(uri, 1, 0, "Abstract3DSeries", + QLatin1String("Trying to create uncreatable: Abstract3DSeries.")); + qmlRegisterUncreatableType(uri, 1, 0, "QBar3DSeries", + QLatin1String("Trying to create uncreatable: QBar3DSeries, use Bar3DSeries instead.")); + qmlRegisterUncreatableType(uri, 1, 0, "QScatter3DSeries", + QLatin1String("Trying to create uncreatable: QScatter3DSeries, use Scatter3DSeries instead.")); + qmlRegisterUncreatableType(uri, 1, 0, "QSurface3DSeries", + QLatin1String("Trying to create uncreatable: QSurface3DSeries, use Surface3DSeries instead.")); qmlRegisterType(uri, 1, 0, "BarDataMapping"); qmlRegisterType(uri, 1, 0, "ScatterDataMapping"); @@ -62,12 +70,12 @@ void Datavis3Dqml2Plugin::registerTypes(const char *uri) qmlRegisterType(uri, 1, 0, "ItemModelSurfaceDataProxy"); qmlRegisterType(uri, 1, 0, "HeightMapSurfaceDataProxy"); - qmlRegisterType(uri, 1, 0, "Bar3DSeries"); - qmlRegisterType(uri, 1, 0, "Scatter3DSeries"); - qmlRegisterType(uri, 1, 0, "Surface3DSeries"); - qmlRegisterType(uri, 1, 0, "ColorGradientStop"); qmlRegisterType(uri, 1, 0, "ColorGradient"); + + qmlRegisterType(uri, 1, 0, "Bar3DSeries"); + qmlRegisterType(uri, 1, 0, "Scatter3DSeries"); + qmlRegisterType(uri, 1, 0, "Surface3DSeries"); } QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualizationqml2/datavisualizationqml2_plugin.h b/src/datavisualizationqml2/datavisualizationqml2_plugin.h index d74def9d..2635dcbd 100644 --- a/src/datavisualizationqml2/datavisualizationqml2_plugin.h +++ b/src/datavisualizationqml2/datavisualizationqml2_plugin.h @@ -39,6 +39,7 @@ #include "qbar3dseries.h" #include "qscatter3dseries.h" #include "qsurface3dseries.h" +#include "declarativeseries_p.h" #include @@ -76,6 +77,9 @@ QML_DECLARE_TYPE(QAbstract3DSeries) QML_DECLARE_TYPE(QBar3DSeries) QML_DECLARE_TYPE(QScatter3DSeries) QML_DECLARE_TYPE(QSurface3DSeries) +QML_DECLARE_TYPE(DeclarativeBar3DSeries) +QML_DECLARE_TYPE(DeclarativeScatter3DSeries) +QML_DECLARE_TYPE(DeclarativeSurface3DSeries) QML_DECLARE_TYPE(ColorGradientStop) QML_DECLARE_TYPE(ColorGradient) diff --git a/src/datavisualizationqml2/declarativebars_p.h b/src/datavisualizationqml2/declarativebars_p.h index c3808b7b..a54e5ff7 100644 --- a/src/datavisualizationqml2/declarativebars_p.h +++ b/src/datavisualizationqml2/declarativebars_p.h @@ -59,6 +59,7 @@ class DeclarativeBars : public AbstractDeclarative Q_PROPERTY(QString meshFileName READ meshFileName WRITE setMeshFileName NOTIFY meshFileNameChanged) Q_PROPERTY(QPointF selectedBar READ selectedBar WRITE setSelectedBar NOTIFY selectedBarChanged) Q_PROPERTY(QQmlListProperty seriesList READ seriesList) + Q_CLASSINFO("DefaultProperty", "seriesList") public: explicit DeclarativeBars(QQuickItem *parent = 0); diff --git a/src/datavisualizationqml2/declarativescatter_p.h b/src/datavisualizationqml2/declarativescatter_p.h index e229c0d5..20455b29 100644 --- a/src/datavisualizationqml2/declarativescatter_p.h +++ b/src/datavisualizationqml2/declarativescatter_p.h @@ -54,6 +54,7 @@ class DeclarativeScatter : public AbstractDeclarative Q_PROPERTY(QString meshFileName READ meshFileName WRITE setMeshFileName NOTIFY meshFileNameChanged) Q_PROPERTY(int selectedItemIndex READ selectedItemIndex WRITE setSelectedItemIndex NOTIFY selectedItemIndexChanged) Q_PROPERTY(QQmlListProperty seriesList READ seriesList) + Q_CLASSINFO("DefaultProperty", "seriesList") public: explicit DeclarativeScatter(QQuickItem *parent = 0); diff --git a/src/datavisualizationqml2/declarativeseries.cpp b/src/datavisualizationqml2/declarativeseries.cpp new file mode 100644 index 00000000..81bbb649 --- /dev/null +++ b/src/datavisualizationqml2/declarativeseries.cpp @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +#include "declarativeseries_p.h" +#include "qbardataproxy.h" +#include "qscatterdataproxy.h" +#include "qsurfacedataproxy.h" + +QT_DATAVISUALIZATION_BEGIN_NAMESPACE + +DeclarativeBar3DSeries::DeclarativeBar3DSeries(QObject *parent) + : QBar3DSeries(parent) +{ +} + +DeclarativeBar3DSeries::~DeclarativeBar3DSeries() +{ +} + +QQmlListProperty DeclarativeBar3DSeries::seriesChildren() +{ + return QQmlListProperty(this, this, &DeclarativeBar3DSeries::appendSeriesChildren + , 0, 0, 0); +} + +void DeclarativeBar3DSeries::appendSeriesChildren(QQmlListProperty *list, QObject *element) +{ + QBarDataProxy *proxy = qobject_cast(element); + if (proxy) + reinterpret_cast(list->data)->setDataProxy(proxy); +} + +DeclarativeScatter3DSeries::DeclarativeScatter3DSeries(QObject *parent) + : QScatter3DSeries(parent) +{ +} + +DeclarativeScatter3DSeries::~DeclarativeScatter3DSeries() +{ +} + +QQmlListProperty DeclarativeScatter3DSeries::seriesChildren() +{ + return QQmlListProperty(this, this, &DeclarativeScatter3DSeries::appendSeriesChildren + , 0, 0, 0); +} + +void DeclarativeScatter3DSeries::appendSeriesChildren(QQmlListProperty *list, QObject *element) +{ + QScatterDataProxy *proxy = qobject_cast(element); + if (proxy) + reinterpret_cast(list->data)->setDataProxy(proxy); +} + +DeclarativeSurface3DSeries::DeclarativeSurface3DSeries(QObject *parent) + : QSurface3DSeries(parent) +{ +} + +DeclarativeSurface3DSeries::~DeclarativeSurface3DSeries() +{ +} + +QQmlListProperty DeclarativeSurface3DSeries::seriesChildren() +{ + return QQmlListProperty(this, this, &DeclarativeSurface3DSeries::appendSeriesChildren + , 0, 0, 0); +} + +void DeclarativeSurface3DSeries::appendSeriesChildren(QQmlListProperty *list, QObject *element) +{ + QSurfaceDataProxy *proxy = qobject_cast(element); + if (proxy) + reinterpret_cast(list->data)->setDataProxy(proxy); +} + +QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualizationqml2/declarativeseries_p.h b/src/datavisualizationqml2/declarativeseries_p.h new file mode 100644 index 00000000..cb6b76c2 --- /dev/null +++ b/src/datavisualizationqml2/declarativeseries_p.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the QtDataVisualization API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. + +#ifndef DECLARATIVESERIES_P_H +#define DECLARATIVESERIES_P_H + +#include "datavisualizationglobal_p.h" +#include "qbar3dseries.h" +#include "qscatter3dseries.h" +#include "qsurface3dseries.h" +#include + +QT_DATAVISUALIZATION_BEGIN_NAMESPACE + +class DeclarativeBar3DSeries : public QBar3DSeries +{ + Q_OBJECT + Q_PROPERTY(QQmlListProperty seriesChildren READ seriesChildren) + Q_CLASSINFO("DefaultProperty", "seriesChildren") +public: + DeclarativeBar3DSeries(QObject *parent = 0); + virtual ~DeclarativeBar3DSeries(); + + QQmlListProperty seriesChildren(); + static void appendSeriesChildren(QQmlListProperty *list, QObject *element); +}; + +class DeclarativeScatter3DSeries : public QScatter3DSeries +{ + Q_OBJECT + Q_PROPERTY(QQmlListProperty seriesChildren READ seriesChildren) + Q_CLASSINFO("DefaultProperty", "seriesChildren") +public: + DeclarativeScatter3DSeries(QObject *parent = 0); + virtual ~DeclarativeScatter3DSeries(); + + QQmlListProperty seriesChildren(); + static void appendSeriesChildren(QQmlListProperty *list, QObject *element); +}; + +class DeclarativeSurface3DSeries : public QSurface3DSeries +{ + Q_OBJECT + Q_PROPERTY(QQmlListProperty seriesChildren READ seriesChildren) + Q_CLASSINFO("DefaultProperty", "seriesChildren") +public: + DeclarativeSurface3DSeries(QObject *parent = 0); + virtual ~DeclarativeSurface3DSeries(); + + QQmlListProperty seriesChildren(); + static void appendSeriesChildren(QQmlListProperty *list, QObject *element); +}; + +QT_DATAVISUALIZATION_END_NAMESPACE + +#endif diff --git a/src/datavisualizationqml2/declarativesurface_p.h b/src/datavisualizationqml2/declarativesurface_p.h index c6284a9b..7e55a594 100644 --- a/src/datavisualizationqml2/declarativesurface_p.h +++ b/src/datavisualizationqml2/declarativesurface_p.h @@ -56,6 +56,7 @@ class DeclarativeSurface : public AbstractDeclarative Q_PROPERTY(ColorGradient *gradient READ gradient WRITE setGradient) Q_PROPERTY(QPointF selectedPoint READ selectedPoint WRITE setSelectedPoint NOTIFY selectedPointChanged) Q_PROPERTY(QQmlListProperty seriesList READ seriesList) + Q_CLASSINFO("DefaultProperty", "seriesList") public: explicit DeclarativeSurface(QQuickItem *parent = 0); -- cgit v1.2.3