为什么我会收到 QGraphicsPolygonItem 重新实现的 moc 错误

Why am I getting moc errors for QGraphicsPolygonItem reimplementation

请帮帮我!我正在进行一个小型个人项目,我需要某种 node editor。为此,我必须定义继承自 QGraphicsPolygonItem class 的 Individual class。我尽可能地简化了代码以便能够识别错误但无济于事。我收到 MOC(元对象编译器)错误,老实说我不明白(我们在某种程度上都是新手)。还有,网上什么也没有,你是我不得已的办法

这里是 Individual class 定义:

#ifndef INDIVIDUAL_H
#define INDIVIDUAL_H

#include <QGraphicsPolygonItem>
#include <QGraphicsTextItem>
#include <QPainterPath>

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

};

#endif // INDIVIDUAL_H

这是它的实现:

#include "individual.h"

Individual::Individual(QString p_fName , QString p_lNamen, QGraphicsItem* parent)
    :QGraphicsPolygonItem(parent)

{

    QPainterPath temp_path;
    temp_path.addRoundRect(0,0,100,50,10,10);
    setPolygon(temp_path.toFillPolygon());
}

然后在 main.cpp (简单来说) 我写了这样的东西:

#include "widget.h"
#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <individual.h>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.setMinimumSize(800,600);
    
    QGraphicsView view(&w);
    view.setMinimumSize(800,600);
    
    QGraphicsScene scene;
    Individual myPoly("My","Name"); // The arguments are not used for now just kept them there in case
    scene.addItem(&myPoly);

    view.setScene(&scene);

    w.show();
    return a.exec();
}

最后 错误 我得到了 evrytime:

因为 QGraphicsPolygonItemQGraphicsItem 而不是 QObject。您可以使用 C++ 的多重继承特性,使 Individual class 同时由

 Individual : public QObject, public QGraphicsPolygonItem
{
...

并且不要忘记为 Individual ctore 调用 QObject ctor。

现在,我建议您也阅读 this question and the answers