簡體   English   中英

Qt - 沒有匹配的函數來調用連接

[英]Qt - No matching function to call to connect

當我嘗試調用 connect 時出現此錯誤。

E:\\GraphTool\\graphscene.cpp:7: 錯誤:沒有匹配的函數調用 'GraphScene::connect(QObject*&, void (MainWindow:: )(Mode), GraphScene , void (GraphScene::*)(Mode) ))' QObject::connect(parent, &MainWindow::changedMode, this, &GraphScene::setMode);

我在 graphscene.cpp 中調用了 connect

    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;
}

主窗口類:

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 宏。

您是否嘗試過將MainWindow*發送到 ctor? 我認為它無法將發送者函數映射到它的對象:

GraphScene::GraphScene(MainWindow *parent)
    : QGraphicsScene (parent), mode(NAV)
{
    QObject::connect(parent, &MainWindow::changedMode, this, &GraphScene::setMode);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM