Как добавить пользовательский класс в проект 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, как бы намекая...