2017-05-11 12 views
0

信号とスロットを接続しようとしています。私はそれを働かせましたが、誤って.hファイルを削除しました。今私はそれを書き直そうとしたが、すべてが地獄になった。私が持っている:Qt - 接続に一致する機能はありませんか?

#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と呼ばれるクラスです。ヘッダにI混乱をやった

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

:今私は2つの接続回線のエラーを取得していますか?私はそれがそれだったようにそれを書き直したと思う...

+1

バージョンコントロールシステムを使用; –

+0

'QObject'から派生しないクラスでスロットとシグナルを使用することはできません。 – rbaleksandar

+0

ありがとう、5分前に分かった:) –

答えて

1

私は: public QObjectベースクラスを使用する必要があります。

-1

gamemanager.hのQObjectからの公開継承をシグナル用に追加し、slotを呼び出すことができます。

class GameManager : public QObject{ //your class definition }; 
関連する問題