添加c++;QAbstractSeries到QML图表视图 与QML和QtStuts/CabtVIEW结合,我很难用C++来工作。如果有任何意见在任何时候,我很高兴在这里 问题:我想在QML添加一个C++定义的Chartview。 我的主要问题是将我的c++类setLineSeries()连接到我的qmlChartview{}对象

添加c++;QAbstractSeries到QML图表视图 与QML和QtStuts/CabtVIEW结合,我很难用C++来工作。如果有任何意见在任何时候,我很高兴在这里 问题:我想在QML添加一个C++定义的Chartview。 我的主要问题是将我的c++类setLineSeries()连接到我的qmlChartview{}对象,c++,qt,qml,C++,Qt,Qml,我试图通过创建一个新系列来实现这一点 var series = diabBig.createSeries(ChartView.SeriesTypeLine, "Test", diabBig.axisX(lineseries), diabBig.axisY(lineseries)); 然后将此series对象更改为我的c++QLineSeriesObject series = diabetesView.setLineSeries(); 是否有可能做到这一点,或者如何使用C++中的QLeNeSe

我试图通过创建一个新系列来实现这一点

var series = diabBig.createSeries(ChartView.SeriesTypeLine, "Test", diabBig.axisX(lineseries), diabBig.axisY(lineseries));
然后将此series对象更改为我的c++QLineSeriesObject

series = diabetesView.setLineSeries();

是否有可能做到这一点,或者如何使用C++中的QLeNeSeices(QuastAcess系列)? 编辑:“如果我想做的不可能,这将是一个可以接受的答案,即使它不是我希望阅读的答案!”

下面是我的简短而讽刺的示例代码:

diabChart.h

#ifndef DIABCHART_H
#define DIABCHART_H

#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QDateTimeAxis>
#include <QtCharts/QCategoryAxis>
#include <QDateTime>
#include <QtQuick/QQuickPaintedItem>
#include <QColor>
#include <QObject>

QT_CHARTS_USE_NAMESPACE

class DiabChart : public QObject
{
    Q_OBJECT

public:
    explicit DiabChart(QObject *parent = 0);

    Q_INVOKABLE QAbstractSeries* setLineSeries();

};

#endif // DIABCHART_H
test.pro

TEMPLATE = app

QT += charts qml quick

CONFIG += c++11

SOURCES += main.cpp \
    diabchart.cpp

RESOURCES += qml.qrc

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH = #../Diabetes

# Default rules for deployment.
include(deployment.pri)

DISTFILES +=

HEADERS += diabchart.h

我没有像这样使用函数
QAbstractSeries*DiabChart::setLineSeries()
而是将其更改为:
void DiabChart::setLineSeries(QLineSeries*lineSeries)

为更改图表视图输入而调用的函数如下所示:

function addSeries()
{
    //Define Axes of the ChartView
    diabetesView.getAxisYDescription(yDescription);
    diabetesView.getAxisXTime(xTime);
    diabetesView.getAxisYValues(yValues);

    // Create new LineSeries with 3 Axes (Two-Y-Axis, One-X-Axis)
    var mySeries = diabChartBig.createSeries(ChartView.SeriesTypeLine, "Line", xTime, yValues);
    var mySeries2 = diabChartBig.createSeries(ChartView.SeriesTypeLine, "Overview", xTime, yDescription);

    // Define series on specific wishes
    diabetesView.setLineSeries(mySeries);

    //Delete not needed series (only created because second y-Axis
    diabChartBig.removeSeries(mySeries2);
}
ChartView{
    id: diabChartBig
    title: "Overview"
    width: diabetesApplicationArea.width * 0.78
    height: diabetesApplicationArea.height * 0.66
    antialiasing: true
    backgroundColor: "grey"
    CategoryAxis{
        id: yDescription
    }
    DateTimeAxis{
        id: xTime
    }
    CategoryAxis{
        id: yValues
    }
}
具有最小设置的ChartView对象如下所示:

function addSeries()
{
    //Define Axes of the ChartView
    diabetesView.getAxisYDescription(yDescription);
    diabetesView.getAxisXTime(xTime);
    diabetesView.getAxisYValues(yValues);

    // Create new LineSeries with 3 Axes (Two-Y-Axis, One-X-Axis)
    var mySeries = diabChartBig.createSeries(ChartView.SeriesTypeLine, "Line", xTime, yValues);
    var mySeries2 = diabChartBig.createSeries(ChartView.SeriesTypeLine, "Overview", xTime, yDescription);

    // Define series on specific wishes
    diabetesView.setLineSeries(mySeries);

    //Delete not needed series (only created because second y-Axis
    diabChartBig.removeSeries(mySeries2);
}
ChartView{
    id: diabChartBig
    title: "Overview"
    width: diabetesApplicationArea.width * 0.78
    height: diabetesApplicationArea.height * 0.66
    antialiasing: true
    backgroundColor: "grey"
    CategoryAxis{
        id: yDescription
    }
    DateTimeAxis{
        id: xTime
    }
    CategoryAxis{
        id: yValues
    }
}
结果如下所示:

function addSeries()
{
    //Define Axes of the ChartView
    diabetesView.getAxisYDescription(yDescription);
    diabetesView.getAxisXTime(xTime);
    diabetesView.getAxisYValues(yValues);

    // Create new LineSeries with 3 Axes (Two-Y-Axis, One-X-Axis)
    var mySeries = diabChartBig.createSeries(ChartView.SeriesTypeLine, "Line", xTime, yValues);
    var mySeries2 = diabChartBig.createSeries(ChartView.SeriesTypeLine, "Overview", xTime, yDescription);

    // Define series on specific wishes
    diabetesView.setLineSeries(mySeries);

    //Delete not needed series (only created because second y-Axis
    diabChartBig.removeSeries(mySeries2);
}
ChartView{
    id: diabChartBig
    title: "Overview"
    width: diabetesApplicationArea.width * 0.78
    height: diabetesApplicationArea.height * 0.66
    antialiasing: true
    backgroundColor: "grey"
    CategoryAxis{
        id: yDescription
    }
    DateTimeAxis{
        id: xTime
    }
    CategoryAxis{
        id: yValues
    }
}