Qt - Нет подходящей функции для вызова для подключения - PullRequest
0 голосов
/ 27 января 2019

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

1 Ответ

0 голосов
/ 27 января 2019

Вы пытались вместо этого отправить MainWindow* в ctor? Я думаю, что не удается сопоставить функцию отправителя с ее объектом: GraphScene::GraphScene(MainWindow *parent) : QGraphicsScene (parent), mode(NAV) { QObject::connect(parent, &MainWindow::changedMode, this, &GraphScene::setMode); }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...