我正在尝试创建一个使用计时器的简单游戏,但我似乎无法让它工作。它抛出了这个错误:“没有匹配函数来调用'QObject :: connect(QTimer *&,const char *,Time *&,const char *)'”现在重要的是我做什么我无法解决它请帮忙。当我遇到这个错误时,我才开始编写游戏代码。以下是排除不重要(目前)qml文件的文件。
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:
#include "time.h"
int theTime = 60;
Time::Time()
{
ShowTime();
}
void Time::ShowTime()
{
theTime--;
}
int Time::setTime()
{
return theTime;
}
#endif // TIME_H
答案 0 :(得分:8)
您对Time的实现并未将其声明为QObject,因此您无法连接它的插槽或信号。你需要继承QObject(或者如果你想在屏幕上绘制,可能还有QWidget),然后包含声明Q_OBJECT
的语句,它实例化了一些需要的东西。
class Time : public QWidget
{
Q_OBJECT
public:
Time();
private slots:
void ShowTime();
signals:
int setTime();
};
答案 1 :(得分:1)
我注意到您的类不包含定义的Q_OBJECT
宏。这可能有助于您的努力。
class Time
{
Q_OBJECT
public Time()
.
.
.
}