Qt继承自QGraphicsEllipseItem

时间:2010-04-15 11:09:12

标签: qt

我试图继承QGraphicsEllipseItem,因为我想为它添加一些功能。但是我遇到了这个错误,这可能与编译器/预编译器或moc有关?

error: 'staticMetaObject' is not a member of 'QGraphicsEllipseItem'

这是类代码:

class MyEllipseItem : public QGraphicsEllipseItem
{
    Q_OBJECT

public:
    MyEllipseItem (const QRectF & outline) : QGraphicsEllipseItem(outline)
    {

    }
};

4 个答案:

答案 0 :(得分:8)

QGraphicsEllipseItem不是QObject,所以只需从类声明中删除Q_OBJECT。

答案 1 :(得分:1)

当从QRunnable继承时,我遇到了类似的错误,顺便说一句,这不是QObject。
原因

  1. Bad order of inheritence

答案 2 :(得分:1)

但是,如果您需要在类中使用一些插槽/信号,您可以继承QObject,就像QGraphicsObject一样

class MyEllipseItem : public QGraphicsEllipseItem, public QObject
{
    Q_OBJECT

public:
    MyEllipseItem (const QRectF & outline) : QGraphicsEllipseItem(outline)
    {

    }
};

继承QGraphicsObject并重新实现椭圆绘图可能是一个更好的主意。

有关详细信息,请查看QGraphicsObject documentation

答案 3 :(得分:1)

在这种情况下你只需要尝试继承QObject 第一个,我的意思是:

请记住“多个继承需要QObject为第一个”,否则您将得到与上面相同的错误,或者“YourClass继承自两个QObject子类”的行MOC。

See this link!了解更多信息。

例如:

#include<QObject>
#include<QGraphicsEllipseItem> 
class myclass :  public QObject , public QGraphicsEllipseItem{
Q_OBJECT


// your code...

};