首页 > 解决方案 > Qt Creator 给我 [debug:/moc_scheduled.cpp] 错误 1,我不知道为什么

问题描述

我的整个代码似乎都可以工作,据我所知,我已经 #included 了所有内容。真的真的迷失了这个,并强调该怎么做!请有人在我需要的时候救救我!:))

这是我的schedule.h文件:

#ifndef SCHEDULED_H
#define SCHEDULED_H
class Scheduled {

    Q_OBJECT


    public:
        Scheduled(string *start, string *end, int *boilerLvl);
        string* start;
        string* end;
        int* boilerlevel;
};
#endif

这是我的schedule.cpp文件:

#include "scheduled.h"

Scheduled::Scheduled(string *startTime, string *endTime, int *boilerSet)
{

    start = startTime;
    end = endTime;
    boilerlevel = boilerSet;
};

我使用的所有其他文件在它们的顶部都有#include "schedule.h",并且不会抛出任何错误。

我的makefile看起来像这样:

QT += core gui widgets

CONFIG += c++11 console
QT     += widgets uitools



# DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    

SOURCES += \
        gui.cpp \
        main.cpp \
        main_copy.cpp \
        scheduled.cpp \
        screen1.cpp

qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

HEADERS += \
    gui.h \
    scheduled.h \
    screen1.h \
    status.h

FORMS += \
    screen1.ui

最后,我得到的确切错误是:

[Makefile.Debug:411 调试/moc_scheduled.cpp] 错误 1

非常感谢你的帮助!:)

标签: c++qt

解决方案


在它的声明中使用的任何对象都应该从类Q_OBJECT继承。QObject

删除Q_OBJECT宏调用。

或者将您的标题更改为:

#ifndef SCHEDULED_H
#define SCHEDULED_H

#include <QObject>

class Scheduled : public QObject {
    Q_OBJECT
public:
    Scheduled(string *start, string *end, int *boilerLvl);

public:
    string* start;
    string* end;
    int* boilerlevel;
};

#endif // SCHEDULED_H

推荐阅读