Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Fregloin от Июль 19, 2011, 18:21



Название: Проблема с наследованием QGraphicsItemGroup
Отправлено: Fregloin от Июль 19, 2011, 18:21
Вопрос, почему такой код
Код:
#include <QObject>
#include <QGraphicsItemGroup>

class QCassete : public QGraphicsItemGroup
{
    Q_OBJECT

protected:

    QSizeF  fsize;
    QRectF  boundingRect() const;
    void    paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);

public:

    QCassete(QGraphicsItem * parent = 0);
};
Выдает ошибку компиляции:
debug/moc_qcassete.cpp:41: error: 'staticMetaObject' is not a member of 'QGraphicsItemGroup'
c:/Qt/2010.04/qt/include/QtCore/../../src/corelib/kernel/qobject.h: In member function 'virtual const QMetaObject* QCassete::metaObject() const':
c:/Qt/2010.04/qt/include/QtCore/../../src/corelib/kernel/qobject.h:296: error: 'QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> > QObject::d_ptr' is protected
debug/moc_qcassete.cpp:51: error: within this context
c:/Qt/2010.04/qt/include/QtCore/../../src/corelib/kernel/qobject.h:296: error: object missing in reference to 'QObject::d_ptr'
debug/moc_qcassete.cpp:51: error: from this location
c:/Qt/2010.04/qt/include/QtCore/../../src/corelib/kernel/qobject.h:296: error: 'QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> > QObject::d_ptr' is protected
debug/moc_qcassete.cpp:51: error: within this context
c:/Qt/2010.04/qt/include/QtCore/../../src/corelib/kernel/qobject.h:296: error: object missing in reference to 'QObject::d_ptr'
debug/moc_qcassete.cpp:51: error: from this location
debug/moc_qcassete.cpp: In member function 'virtual void* QCassete::qt_metacast(const char*)':
debug/moc_qcassete.cpp:59: error: 'qt_metacast' is not a member of 'QGraphicsItemGroup'
debug/moc_qcassete.cpp: In member function 'virtual int QCassete::qt_metacall(QMetaObject::Call, int, void**)':
debug/moc_qcassete.cpp:64: error: 'qt_metacall' is not a member of 'QGraphicsItemGroup'
mingw32-make[1]: *** [debug/moc_qcassete.o] Error 1
mingw32-make: *** [debug] Error 2
Процесс "C:/Qt/2010.04/mingw/bin/mingw32-make.exe" завершился с кодом %2.


Название: Re: Проблема с наследованием QGraphicsItemGroup
Отправлено: GreatSnake от Июль 19, 2011, 18:26
Убери Q_OBJECT. QGraphicsItemGroup не является производным от QObject.

PS. И на будущее, если базовым классом будет QObject, но трансляция и подключение сигналов не нужны, то и Q_OBJECT нет смысла вставлять.


Название: Re: Проблема с наследованием QGraphicsItemGroup
Отправлено: Fregloin от Июль 19, 2011, 18:27
Задача, есть шкаф с модулями ввода/вывода. В кажом шкафу может быть 4 кассеты, в каждой кассете по 13 модулей максимум.
Каждый модуль у меня наследуется от QGraphicsObject, по сути прямоугольник с некоторой инфой.
Так вот задача, мышью кидать эти модуля по кассетам (я хотел их реализовать через группы), и внутри кассеты эти модули уже выравнивались и рисовались по своим правилам. Или для такой задачи QGraphicsItemGroup не годится и все координаты пересчитывать мне вручную?


Название: Re: Проблема с наследованием QGraphicsItemGroup
Отправлено: Fregloin от Июль 19, 2011, 18:29
на счет Q_OBJECT спасибо, помогло.