Здравствуйте!
Решил сделать взаимодействие с графиком в отдельном файле, чтобы удобно было работать с кнопками и самим графиком, но столкнулся с такой проблемой, что при компиляции появляется ошибка does not name a type. Я поискал в гугле, что по этой проблеме говорят (например, https://stackoverflow.com/questions/2133250/x-does-not-name-a-type-error-in-c), понял, что нужно сместить свой класс, так чтобы он собирался раньше чем MainWindow, но я не понимаю, как это сделать, когда класс MainWindow основной, и при перестановке хедеров в mainwindow.h у меня появляется еще большее количество ошибок.
mianwindow.h
#include <QMainWindow>
#include <QFont>
#include <QVector>
#include <QTimer>
#include <QtMath>
#include "oscilloscope.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
public slots:
void setData(const QVector< double > &keys, const QVector< double > &values);
void replotGraph();
signals:
private:
Ui::MainWindow *ui;
Oscilloscope *scope;
};
oscilloscope.h
#include <mainwindow.h>
#define SIZE_SAMPLE 5000
#define TIME_UPDATE 10
class Oscilloscope : public QMainWindow
{
Q_OBJECT
public:
Oscilloscope(QWidget *parent = nullptr);
~Oscilloscope();
void Updated();
void setNotifyInterval(int t);
double gaussrand(double m, double sko);
double sin(double f, double amp, int x);
void setTimeUpdate(int time);
private slots:
void processing();
signals:
void notify();
void setData(const QVector<double> &keys, const QVector<double> &values);
void replotGraph();
void setColorPen();
void setStalyPen();
void setRandgeAxisX();
void setRandgeAxisY();
private:
QTimer *timer;
QVector<double> x, y;
QVector<double> xSin, ySin;
int timeUpdate;
};
Проблема исчезла, когда я родителем у класса Oscilloscope сделал QObject. Правильно ли я понимаю, что сделав в качестве родителя самый базовый класс Qt, я гарантировал, что мой созданный класс будет собираться перед MainWindow?