LINUX.ORG.RU

Непонятки с Qt


0

0

Есть простейший класс:

.h файл:

#include <QGraphicsItem>

class Wall : public QGraphicsItem {
    Q_OBJECT
public:
	Wall(QGraphicsItem *parent = 0);
};

.cpp файл:

#include "wall.h"

Wall::Wall(QGraphicsItem *parent) : QGraphicsItem(parent){}

При компиляции выдает что-то вообще непонятное:

moc_wall.cpp:37: error: ‘staticMetaObject’ is not a member of ‘QGraphicsItem’
moc_wall.cpp: In member function ‘virtual void* Wall::qt_metacast(const char*)’:
moc_wall.cpp:51: error: ‘qt_metacast’ is not a member of ‘QGraphicsItem’
moc_wall.cpp: In member function ‘virtual int Wall::qt_metacall(QMetaObject::Call, int, void**)’:
moc_wall.cpp:56: error: ‘qt_metacall’ is not a member of ‘QGraphicsItem’

Что за беда? В коде никакого криминала не заметил. Откуда это?

PS: Debian testing, Qt 4.3.2
★★★★

#include <QGraphicsItem>
#include <QObject>

class Wall : public QObject, public QGraphicsItem {
    Q_OBJECT
public:
	Wall(QGraphicsItem *parent = 0);
};

-----------

#include "wall.h"

Wall::Wall(QGraphicsItem *parent) : QObject(), QGraphicsItem(parent)

{}

-----------

ога ? читайте документацию, сколько можно повторять :)

alex_custov ★★★★★
()
Ответ на: комментарий от alex_custov

Блин. Работает. Спасибо.

А что это за ерунда? Почему так? 10 объектов работают, как я привел, а этот только так... Странно как-то. И в каком месте документации это описано?

Ещё раз спасибо.

Ximen ★★★★
() автор топика
Ответ на: комментарий от Ximen

QGraphicsItem не наследует QObject, соотв. не может учавствовать в системе сигналов-слотов. Нужно сделать его сначала наследником QObject, а потом уже использовать...

Где было написано не помню, за давностью лет :)

alex_custov ★★★★★
()
Ответ на: комментарий от alex_custov

Понятно... Я просто непонятно почему (видимо, по привычке) был уверен, что все объекты в Qt происходят от QObject... Оказывается нет :)

Ximen ★★★★
() автор топика
Ответ на: комментарий от Ximen

дык наследуются от QObject только те, которым надо сигналы/слоты. Некоторым сигналы не нужны, типа как QGraphicsItem или QMap, вот они и "шалят" :)

alex_custov ★★★★★
()
Ответ на: комментарий от Ximen

> Могли бы хотя бы в целях единообразия сделать... :)

Зачем тянуть то, что не нужно в класс? Тролли всё делают по уму.

Rubystar ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.