QTimer基本程序帮助

时间:2011-09-19 17:16:32

标签: c++ qt

我正在尝试创建一个使用计时器的简单游戏,但我似乎无法让它工作。它抛出了这个错误:“没有匹配函数来调用'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

2 个答案:

答案 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() 
    .
    .
    .
}