我试图继承QGraphicsEllipseItem,因为我想为它添加一些功能。但是我遇到了这个错误,这可能与编译器/预编译器或moc有关?
error: 'staticMetaObject' is not a member of 'QGraphicsEllipseItem'
这是类代码:
class MyEllipseItem : public QGraphicsEllipseItem
{
Q_OBJECT
public:
MyEllipseItem (const QRectF & outline) : QGraphicsEllipseItem(outline)
{
}
};
答案 0 :(得分:8)
QGraphicsEllipseItem不是QObject,所以只需从类声明中删除Q_OBJECT。
答案 1 :(得分:1)
答案 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...
};
的