Qt - 没有用于连接的匹配功能

Qt - No matching function for connect?

本文关键字:功能 连接 用于 Qt      更新时间:2023-10-16

我正在尝试连接信号和插槽。我让它工作,但我不小心删除了一个 .h 文件。现在我试图重写它,一切都下地狱了。我有:

#ifndef GAMEMANAGER_H
#define GAMEMANAGER_H
#include "gamepersistence.h"
class GameManager
{
    Q_OBJECT
public:
    GameManager();
    ~GameManager();
    GamePersistence* _gamePersistece;
// other stuff
 signals:
    void refreshPlease();
    void gameOverSignal();
};
#endif // GAMEMANAGER_H

然后我尝试在另一个类中连接它:

GameWindow::GameWindow(QWidget *parent)
    : QWidget(parent)
{
    setFixedSize(900,200);
    setWindowTitle(trUtf8("Amőba"));
    //this->setStyleSheet("background-color: white;");
    _gameManager = new GameManager();
//    _gameManager->setFocusPolicy(Qt::StrongFocus);
    connect(_gameManager, SIGNAL(gameOverSignal()), this, SLOT(gameOver()));
    connect(_gameManager, SIGNAL(refreshPlease()), this, SLOT(refreshTable()));
//other stuff
}

这是在一个名为GameWindow的类中。现在我收到两条连接线的错误:

error: no matching function for call to 'GameWindow::connect(GameManager*&, const char*, GameWindow* const, const char*)' connect(_gameManager, SIGNAL(gameOverSignal()), this, SLOT(gameOver()));

我在标题中搞砸了什么?我想我已经重写了它...

想通了,我必须使用: public QObject基类。

在 gamemanager.h 中添加来自 QObject 的公共继承信号和插槽可以调用。

class GameManager : public QObject{ //your class definition };