Qt Creator编译报错[debug/moc_scheduled.cpp] Error 1如何解决
问题修复方案
核心错误点1:Q_OBJECT宏使用不规范
你在Scheduled类中声明了Q_OBJECT宏,但该类未继承QObject基类,Qt元对象编译器(MOC)处理Q_OBJECT的前置要求就是所属类必须继承自QObject,这是触发moc_scheduled.cpp编译错误的直接原因。
两种修复方式二选一即可:
- 如果你需要用到信号槽、Qt属性等元对象能力,修改
scheduled.h如下:
#ifndef SCHEDULED_H #define SCHEDULED_H #include <QObject> #include <string> class Scheduled : public QObject { Q_OBJECT public: Scheduled(std::string *start, std::string *end, int *boilerLvl, QObject *parent = nullptr); std::string* start; std::string* end; int* boilerlevel; }; #endif
同时修改scheduled.cpp构造函数补全父类初始化:
#include "scheduled.h" Scheduled::Scheduled(std::string *startTime, std::string *endTime, int *boilerSet, QObject *parent) : QObject(parent), start(startTime), end(endTime), boilerlevel(boilerSet) { }
- 如果你不需要用到Qt元对象相关特性,直接删除类内的
Q_OBJECT宏即可,无需继承QObject。
其他待修正问题
- 你代码中直接使用
string类型,既没有引入<string>头文件,也没有指定std::命名空间,需要补全对应声明。 - 你提到其他文件引入的是
#include "schedule.h",但你的头文件实际名称为scheduled.h,拼写不一致,若不是输入笔误请修正所有引入的头文件名。
最后操作
所有修改完成后,先清理项目,再执行qmake重新生成Makefile,之后重新编译即可解决报错,旧的MOC中间文件需要重新生成才能生效。
内容的提问来源于stack exchange,提问作者TheSmegler
相关产品推荐
相关产品推荐

