Qt наследуется от QGraphicsEllipseItem - PullRequest
5 голосов
/ 15 апреля 2010

Я пытался унаследовать от QGraphicsEllipseItem, потому что я хотел добавить к нему некоторые функциональные возможности. Однако я столкнулся с этой ошибкой, которая, вероятно, как-то связана с компилятором / прекомпилятором или moc?

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

А вот код класса:

class MyEllipseItem : public QGraphicsEllipseItem
{
    Q_OBJECT

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

    }
};

Ответы [ 4 ]

8 голосов
/ 15 апреля 2010

QGraphicsEllipseItem не является QObject, поэтому просто удалите Q_OBJECT из объявления класса.

1 голос
/ 12 июля 2016

в этом случае вам нужно просто попытаться наследовать объект QObject Сначала , я имею в виду:

Помните, что « множественное наследование требует, чтобы QObject был первым », в противном случае вы получите либо ту же ошибку, что и выше, либо что-то вроде «YourClass наследует от двух подклассов QObject» от moc .

Смотрите эту ссылку! для получения дополнительной информации.

например:

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


// your code...

};

1 голос
/ 26 октября 2011

Если, однако, вам нужно использовать некоторые слоты / сигналы в вашем классе, вы можете наследовать от QObject так же, как это делает QGraphicsObject

class MyEllipseItem : public QGraphicsEllipseItem, public QObject
{
    Q_OBJECT

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

    }
};

Может быть, лучше наследовать от QGraphicsObject и переопределить рисунок эллипса.

Более подробную информацию смотрите в документации QGraphicsObject .

1 голос
/ 25 октября 2011

У меня была похожая ошибка при наследовании от QRunnable, который, кстати, НЕ является QObject.
Причина

  1. Неверный порядок наследования
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...