Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: troorl от Март 09, 2007, 04:52



Название: QGraphicsItem и сигналы - вещи несовместимые?
Отправлено: troorl от Март 09, 2007, 04:52
Посылаю в одном из методов потомка QGraphicsItem сигнал:
Код:
emit onSelectItem();


В заголовочном файле указываю:
Код:
signals:
    void onSelectItem();


Но при компиляции вылазит ошибка:
Код:
build/moc/moc_frameItem.cpp:40: error: staticMetaObject is not a member of QGraphicsItem


Неужели нельзя посылать сигналы из QGraphicsItem?

добавлено спустя 2 минуты:

 Да, и ещё: макрос Q_OBJECT я указать не забыл)

добавлено спустя 34 минуты:

 Методом тыка пришёл к выводу, что надо добавить в предки ещё и QObject. Не знаю, правильно ли это, но вроде работает :)


Название: QGraphicsItem и сигналы - вещи несовместимые?
Отправлено: Вячеслав от Март 09, 2007, 17:22
ГЫЫЫЫЫЫЫЫЫЫЫЫЫ!!!  А Доку кто будет читать ? QGraphicsItem - не НАСЛЕДНИК QObject'a следовательно если хотится сигналов делаем двойное наследование
Код:
class Mouse : public QObject, public QGraphicsItem
{
    Q_OBJECT
и как ни странно - работает ;)


Название: QGraphicsItem и сигналы - вещи несовместимые?
Отправлено: troorl от Март 09, 2007, 17:39
Ну я собственно это и сделал ;)


Название: QGraphicsItem и сигналы - вещи несовместимые?
Отправлено: Вячеслав от Март 09, 2007, 17:44
Ну да ;) И тык тута не причем ;) Кстати - примеры рулят ;)


Название: QGraphicsItem и сигналы - вещи несовместимые?
Отправлено: troorl от Март 09, 2007, 17:57
А можно ещё один вопрос? Как мне при генерации сигнала передать через этот сигнал ссылку на самого себя?
То есть что-то типа такого:

emit balbla(this);

Что-то я никак не могу это победить.


Название: QGraphicsItem и сигналы - вещи несовместимые?
Отправлено: Вячеслав от Март 09, 2007, 18:33
Код:

public slots :
 void doSomeThing(QGraphicsItem*);


и emit по тексту ?


Название: QGraphicsItem и сигналы - вещи несовместимые?
Отправлено: troorl от Март 09, 2007, 20:37
Компилятор говорит такое...

error: invalid conversion from QGraphicsItem* to frameItem*

добавлено спустя 53 минуты:

 Ну вроде с горем пополам сделал. Спасибо :)


Название: QGraphicsItem и сигналы - вещи несовместимые?
Отправлено: Вячеслав от Март 09, 2007, 22:10
а как сделал-то ?
qobject_cast<T*>(obj);  али dynamic_cast ? ;)


Название: QGraphicsItem и сигналы - вещи несовместимые?
Отправлено: troorl от Март 09, 2007, 22:55
не, всё тривиально:
emit someSignal(*this);

и в заголовочном файле
signals:
void someSignal(frameItem &);