Russian Qt Forum

Qt => Вопросы новичков => Тема начата: xintrea от Ноябрь 29, 2017, 20:18



Название: Не могу унаследоваться от QObject.
Отправлено: xintrea от Ноябрь 29, 2017, 20:18
Имею класс, унаследованный от QGraphicsItem. Для того, чтобы в нем работали сигналы-слоты, его надо унаследовать от QObject, потому что QGraphicsItem в своих предках QObject не имеет.

Код:
class GraphicsPhysicsItem : public QGraphicsItem
{
public:
    GraphicsPhysicsItem(QGraphicsItem *parent = Q_NULLPTR);
    virtual ~GraphicsPhysicsItem();

protected:
    ...

};

И что-то я затупил как это делать. Пишу:

Код:
class GraphicsPhysicsItem : public QGraphicsItem, public QObject

Вроде больше ничего не нужно, но компилер ругается:

Код:
undefined reference to `vtable for GraphicsPhysicsItem'

Возможно что нужно еще конструктор для QObject писать, но я не пойму, как писать конструктор одновременно для QGraphicsItem и QObject.

В какую сторону копать?


Название: Re: Не могу унаследоваться от QObject.
Отправлено: sergek от Ноябрь 29, 2017, 20:31
QGraphicsItem - чисто виртуальный.
virtual QRectF    boundingRect() const = 0


Название: Re: Не могу унаследоваться от QObject.
Отправлено: Old от Ноябрь 29, 2017, 21:06
QObject должен идти первым и не забывать про Q_OBJECT:
Код
C++ (Qt)
class GraphicsPhysicsItem : public QObject, public QGraphicsItem
{
   Q_OBJECT
 

Не забыть после этого сделать qmake.


Название: Re: Не могу унаследоваться от QObject.
Отправлено: kai666_73 от Ноябрь 30, 2017, 11:41
QGraphicsObject же... нет?