2011-09-19 9 views
0

타이머를 사용하는 간단한 게임을 만들려고하는데 작동하지 않는 것 같습니다. "QObject :: connect (QTimer * &, const char *, Time * &, const char *) 호출에 대한 일치 함수가 없습니다." "이제는 내가하는 일이 중요합니다. . 이 오류가 발생했을 때 나는 단지 게임 코딩을 시작했습니다. 여기에 중요하지 않은 qml 파일을 제외하고있는 파일이 있습니다.QTimer 기본 프로그램 도움말

하여 Main.cpp :

#include <QtGui/QApplication> 
#include "qmlapplicationviewer.h" 
#include "time.h" 
#include <QObject> 
#include <QTimer> 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    QmlApplicationViewer viewer; 
    viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); 
    viewer.setMainQmlFile(QLatin1String("qml/RaakGame/main.qml")); 
    viewer.showExpanded(); 

    Time *timmer = new Time; 

    QTimer *timer = new QTimer(0); 
    QObject::connect(timer, SIGNAL(timeout()), timmer, SLOT(ShowTime())); 
    timer->start(1000); 

    return app.exec(); 
} 

time.h :

#ifndef TIME_H 
#define TIME_H 

class Time 
{ 

public: 
    Time(); 

private slots: 
    void ShowTime(); 

signals: 
    int setTime(); 

}; 

time.cpp : 나는 당신의 클래스가 정의 된 Q_OBJECT 매크로를 포함하지 않는 것을 알 수

#include "time.h" 

int theTime = 60; 

Time::Time() 
{ 
    ShowTime(); 
} 

void Time::ShowTime() 
{ 
theTime--; 
} 

int Time::setTime() 
{ 
    return theTime; 
} 

#endif // TIME_H 

답변

8

귀하의 시간 구현은 QObject로 선언하지 않으므로 슬롯 또는 신호를 연결할 수 없습니다. QObject (또는 화면에 그려야 할 경우에는 QWidget)를 상속 받아 필요한 부분을 인스턴스화하는 문장 Q_OBJECT을 포함해야합니다.

class Time : public QWidget 
{ 

Q_OBJECT 

public: 
    Time(); 

private slots: 
    void ShowTime(); 

signals: 
    int setTime(); 

}; 
1

. 이것은 당신의 노력을 도울 수 있습니다.

class Time 
{ 
    Q_OBJECT 

public Time() 
    . 
    . 
    . 
}