//mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QGraphicsView> #include "graphicsscene.h" namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT private: QGraphicsView *graph; QWidget *buttonsWidget; QWidget *statusWidget; CustomScene *scene; public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H //mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); graph = ui->graphicsView; // Initialize pointer for graphics view scene = new CustomScene(); // Π’ΡΡ ΠΎΡΠΈΠ±ΠΊΠ° scene->setSceneRect(ui->graphicsView->rect()); // Set size and positon for scene scene->addLine(0,0,200,200); // Test graph->setScene(scene); // Set scene on graphics view statusWidget = ui->StatusWidget; // Initialize pointer for own widget "Status Widget" } MainWindow::~MainWindow() { delete scene; delete ui; } //graphicsscene.h #ifndef GRAPHICSSCENE_H #define GRAPHICSSCENE_H #include <QObject> #include <QGraphicsScene> #include <QGraphicsSceneMouseEvent> class CustomScene : public QGraphicsScene { Q_OBJECT public: explicit CustomScene(QObject *parent = 0); ~CustomScene(); signals: // Π‘ΠΈΠ³Π½Π°Π» Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΡΡΡΠΎΡΠ° ΠΌΡΡΠΈ void signalTargetCoordinate(QPointF point); public slots: private: // Π€ΡΠ½ΠΊΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΡΡΠΈ void mouseMoveEvent(QGraphicsSceneMouseEvent *event); }; #endif // GRAPHICSSCENE_H //graphicsscene.cpp #include "graphicsscene.h" CustomScene::CustomScene(QObject *parent) : QGraphicsScene() { Q_UNUSED(parent); } CustomScene::~CustomScene() { } void CustomScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { emit signalTargetCoordinate(event->scenePos()); }
Gives an error message:
mainwindow.obj: -1: error: LNK2019: link to unresolved external character "public: __thiscall CustomScene :: CustomScene (class QObject *)" (?? 0CustomScene @@ QAE @ PAVQObject @@@ Z) in the function "public: __thiscall MainWindow :: MainWindow (class QWidget *) "(?? 0MainWindow @@ QAE @ PAVQWidget @@@ Z)`
and if you double click on it then writes Π€Π°ΠΉΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ Π²:mainwindow.obj
.
If I mainwindow.h
my CustomScene
and defined it in mainwindow.cpp
, there was no error, but how to make CustomScene in other files?