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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с наследованием QGraphicsItemGroup  (Прочитано 4344 раз)
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« : Июль 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.
« Последнее редактирование: Июль 19, 2011, 18:23 от Fregloin » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Июль 19, 2011, 18:26 »

Убери Q_OBJECT. QGraphicsItemGroup не является производным от QObject.

PS. И на будущее, если базовым классом будет QObject, но трансляция и подключение сигналов не нужны, то и Q_OBJECT нет смысла вставлять.
« Последнее редактирование: Июль 19, 2011, 18:29 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #2 : Июль 19, 2011, 18:27 »

Задача, есть шкаф с модулями ввода/вывода. В кажом шкафу может быть 4 кассеты, в каждой кассете по 13 модулей максимум.
Каждый модуль у меня наследуется от QGraphicsObject, по сути прямоугольник с некоторой инфой.
Так вот задача, мышью кидать эти модуля по кассетам (я хотел их реализовать через группы), и внутри кассеты эти модули уже выравнивались и рисовались по своим правилам. Или для такой задачи QGraphicsItemGroup не годится и все координаты пересчитывать мне вручную?
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #3 : Июль 19, 2011, 18:29 »

на счет Q_OBJECT спасибо, помогло.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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