You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重实现QGraphicsPolygonItem类时出现MOC错误该如何解决?

问题根因

你遇到的MOC错误由两个问题导致:

  1. 核心问题:Q_OBJECT宏只能用于继承自QObject的类,而QGraphicsPolygonItem本身不属于QObject派生类,你在Individual类中添加了Q_OBJECT宏但父类不满足要求,触发MOC编译失败。
  2. 次要笔误:实现文件中构造函数的第二个参数名写错,头文件中定义为p_lName,cpp文件中误写为p_lNamen,后续也会导致参数不匹配报错。

解决方案

方案1(不需要Qt元对象功能时推荐)

直接删除Individual类定义中的Q_OBJECT宏即可解决MOC报错,如果你不需要用到信号槽、属性系统等Qt元对象相关能力,优先选这个方案,改动最小。

方案2(需要用到信号槽等元对象功能时选择)

修改类定义为多继承,将QObject放在继承列表的第一位:

class Individual : public QObject, public QGraphicsPolygonItem
{
    Q_OBJECT
public:
    Individual(QString p_fName, QString p_lName,QGraphicsItem* parent = 0);
};

额外注意

  • 修正cpp文件中构造函数的参数名笔误,把p_lNamen改为p_lName
  • 修改完成后先执行qmake,再重新编译,涉及MOC的变更必须重新运行qmake才能生效,必要时可以清理构建目录后再编译。

内容的提问来源于stack exchange,提问作者Med Okl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:39:03