У меня есть эта ошибка, когда я пытался вызвать connect.
E: \ GraphTool \ graphscene.cpp: 7: ошибка: нет соответствующей функции для вызова GraphScene :: connect (QObject *)&, void (MainWindow :: ) (Mode), GraphScene , void (GraphScene :: *) (Mode)) 'QObject :: connect (parent, & MainWindow :: changeMode, this, & GraphScene :: setMode);
Я вызвал Connect в graphscene.cpp
GraphScene::GraphScene(QObject *parent) : QGraphicsScene (parent), mode(NAV) {
QObject::connect(parent, &MainWindow::changedMode, this, &GraphScene::setMode);
}
Класс GraphScene:
class GraphScene : public QGraphicsScene {
Q_OBJECT
public:
GraphScene(QObject *);
void mousePressEvent(QGraphicsSceneMouseEvent*);
public slots:
void setMode(Mode m);
private:
Mode mode;
}
Класс MainWindow:
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
public slots:
void actionTriggered(QAction *action);
signals:
void changedMode(Mode newMode);
private:
Ui::MainWindow *ui;
QActionGroup* modesGroup;
GraphScene *scene;
};
Я посылаю сигнал здесь, я не знаю, имеет ли это какое-либо отношение к этому:
void MainWindow::actionTriggered(QAction *action){
QString actionText = action->text() ;
if(actionText == "Navigation"){
emit changedMode(NAV);
}
else if (actionText == "Add node") {
emit changedMode(ADD_NODE);
}
else if (actionText == "Delete node") {
emit changedMode(DEL_NODE);
}
}
Я нашел много других ответов по SO, но не смог это исправить.Большинство говорят проверять наследование QObject и макрос Q_OBJECT.