Russian Qt Forum
Ноябрь 23, 2024, 10:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не могу унаследоваться от QObject.  (Прочитано 2786 раз)
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« : Ноябрь 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.

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

Собираю информацию по крупицам
http://webhamster.ru
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #1 : Ноябрь 29, 2017, 20:31 »

QGraphicsItem - чисто виртуальный.
virtual QRectF    boundingRect() const = 0
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4350



Просмотр профиля
« Ответ #2 : Ноябрь 29, 2017, 21:06 »

QObject должен идти первым и не забывать про Q_OBJECT:
Код
C++ (Qt)
class GraphicsPhysicsItem : public QObject, public QGraphicsItem
{
   Q_OBJECT
 

Не забыть после этого сделать qmake.
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #3 : Ноябрь 30, 2017, 11:41 »

QGraphicsObject же... нет?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.076 секунд. Запросов: 23.