Данные не отображаются на QChart

Хочу иметь собственный, пользовательский класс для создания графиков QChart.

Идея заключается в том, чтобы в класс через функцию, можно было добавлять данные, а они уже автоматически будут строится

мой код

mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include QMainWindow
#include <GraphPlotter.h>
#include QDebug

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE


class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp:

#include mainwindow.h
#include ui_mainwindow.h
#include GraphPlotter.h

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    GPlotter gplotter(ui->view);

    QVector<double> arr1{6, 7, 8, 9, 10};
    QVector<double> arr2{5, 4, 3, 2, 1};

    int idOne = gplotter.addData("plot1", arr1);

}

MainWindow::~MainWindow()
{
    delete ui;
}

GraphPlotter.h:

#ifndef GRAPHPLOTTER_H
#define GRAPHPLOTTER_H
#include QChartView
#include QLineSeries
#include QtCharts/QChart
#include QDebug
#include QKeyEvent
#include QWidget

QT_CHARTS_USE_NAMESPACE

class GPlotter : public QChartView
{  
    Q_OBJECT

public:

    explicit GPlotter(QWidget *parent = nullptr);
    ~GPlotter();

    int addData(QString title, QVector <double> &arr);

    QChart *chart;

    QString title;
    QMap<int, QLineSeries*> map;
};

#endif // GRAPHPLOTTER_H

GrarhPlotter.cpp:

#include "GraphPlotter.h"
#include QValueAxis
#include "ui_mainwindow.h"


GPlotter::GPlotter(QWidget *parent):
    QChartView(parent)
{
    chart = new QChart();
    setChart(chart);
    setMouseTracking(true);
}

int GPlotter::addData(QString title, QVector<double> &arr){

    QLineSeries *series = new QLineSeries();
    series->setName(title);

    QValueAxis *axisX = new QValueAxis();
    chart->addAxis(axisX, Qt::AlignBottom);

    QValueAxis *axisY = new QValueAxis();
    chart->addAxis(axisY, Qt::AlignLeft);

    for(int i = 0; i < arr.count(); i++)
        *series << QPointF(i, arr.at(i));

    map.insert(map.count(), series);
    chart->addSeries(series);
    series->attachAxis(axisX);
    series->attachAxis(axisY);

    return map.firstKey();
}


void GPlotter::mousePressEvent(QMouseEvent *event)
{
    if (event->button() == Qt::LeftButton)
    {
        m_lastPoint = event->pos();
        m_isPress = true;
    }
}

GPlotter::~GPlotter()
{

}

На выходе получаю это:

данные не отображаются

данные не отображаются

Форма выглядит так: Вид формы


Ответы (1 шт):

Автор решения: user578677

Я понял в чем ошибка была!!! "Внутренности" класса оформлены правильно, просто надо вызывать функцию через форму, вот так:

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "GraphPlotter.h"
    
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    GPlotter gplotter(ui->view);
    
    QVector<double> arr1{6, 7, 8, 9, 10};
    QVector<double> arr2{5, 4, 3, 2, 1};
    
    ui->view->addData("plot1", arr1);
}
    
MainWindow::~MainWindow()
{
    delete ui;
}
→ Ссылка