Как добавить пользовательский класс в проект Qt?

Пытаюсь присоединить класс "компасс", к Qt-те проекту. Но не присоединяется пишет ошибку не знаю что не так. Вот весь код.

compass.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDebug>
#include <QPainter>
#include <QPen>
#include <QFont>
#include <QFontMetrics>
#include <QKeyEvent>
#include <QRegion>
  
struct texnStructur
{
    ....
};

class Compass : public QMainWindow
{
    Q_OBJECT

public:
     Compass(QWidget *parent = 0);
    ~Compass();

    void razmer_kompas(int x, int y);

protected:
    void paintEvent(QPaintEvent *event);
 //    void resizeEvent(QResizeEvent *event);
    void keyPressEvent(QKeyEvent *event);


    texnStructur _myTexpr; // обьявляем его

};
#endif // MAINWINDOW_H

mainwindows.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QWidget>
#include "compass.h"


namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

};
  
#endif // MAINWINDOW_H

compass.cpp

#include "compass.h"
// все варианты пихал сюда :)
//Compass::Compass()
//Compass::Compass(QWidget *parent): QWidget(parent)
Compass::Compass(QWidget *parent)
    : QMainWindow(parent)
{

}

Compass::~Compass()
{

}

void Compass::paintEvent(QPaintEvent *)
{
    ...
    painter.drawPath(path);
}

void Compass::keyPressEvent(QKeyEvent *event)
{

    ....
    update();
}


void Compass::razmer_kompas(int x, int y)
{
    ....
}

main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

mainwindows.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton>

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

    QPushButton* btn = new QPushButton("hello");
    Compass compass = new Compass(); // вот тут не работает !!!!

    ui->gridLayout->addWidget(btn);
}

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

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

Автор решения: Sergey Tatarincev

вы серъезно? mainwindows.h ровно как и compass.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

на всякий случай го в доки, например https://en.cppreference.com/w/cpp/preprocessor/conditional

и в любом случае qtcreator вам должен был отметить серым все потроха compass.h, как бы намекая...

→ Ссылка