Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: QDgara от Март 27, 2008, 21:25



Название: Емит сигналов QGraphicsScene из QGraphicsItem
Отправлено: QDgara от Март 27, 2008, 21:25
У меня есть наследник от QGraphicsScene, например:
Код:
MyScene:public QGraphicsScene
{
...
signals:
   void mySingnal();
...
}
И наследник от QGraphicsItem:
Код:
MyItem:public QGraphicsItem
{
... //где-то в коде
void foo()
{
  emit _myScene->mySignal();
}
}

Не работает. Как сделать, помагите. Вариант унаследовать от QObject не предлагать, есть на то причины.


Название: Re: Емит сигналов QGraphicsScene из QGraphicsItem
Отправлено: pastor от Март 27, 2008, 23:14
см. QMetaObject::invokeMethod


Название: Re: Емит сигналов QGraphicsScene из QGraphicsItem
Отправлено: QDgara от Март 28, 2008, 12:32
см. QMetaObject::invokeMethod

Спасибо, помогло.  :)


Название: Re: Емит сигналов QGraphicsScene из QGraphicsItem
Отправлено: Вячеслав от Март 28, 2008, 16:20
Вариант унаследовать от QObject не предлагать, есть на то причины.
А почему если не секрет ?


Название: Re: Емит сигналов QGraphicsScene из QGraphicsItem
Отправлено: QDgara от Март 28, 2008, 17:08
А почему если не секрет ?
Не секрет:
1) Предпочитаю пока не пользоваться множественным наследованием.
2) Сущности всё-таки разные, не считаю нужным их смешивать.


Название: Re: Емит сигналов QGraphicsScene из QGraphicsItem
Отправлено: Вячеслав от Март 28, 2008, 22:05
Хм ..... Ну каждый Буратино сам-себе враг ;)
1) В qt куча мест где используеться множественное наследование - фсе работает ;)
2) А чуть подробнее можно ? В чем криминал ? Сами троли за милую душу этим пользуються ;)


Название: Re: Емит сигналов QGraphicsScene из QGraphicsItem
Отправлено: QDgara от Март 28, 2008, 22:26
Хм ..... Ну каждый Буратино сам-себе враг ;)
1) В qt куча мест где используеться множественное наследование - фсе работает ;)
2) А чуть подробнее можно ? В чем криминал ? Сами троли за милую душу этим пользуються ;)

Это палка о двух концах.
1) Есть крупные компании, которые вообще отказываются от множественного наследования.
2) Я же пока не гуру программирования, а в книжках для новичков (Мейерс, Страуструп ) рекомендуют использовать множ.наследования только в исключительных случаях. Я так же согласен, что множ.наследование это мощный инструмент, но пользоваться надо умеючи.
Для себя я пока решил избегать множ.наследования, если есть другие варианты и не менее удобные.


Название: Re: Емит сигналов QGraphicsScene из QGraphicsItem
Отправлено: Вячеслав от Март 30, 2008, 22:14
1) Есть крупные компании, которые вообще отказываются от множественного наследования.
Именно для C++ ? Оригинально ... но в каждой лавке свои тараканы.... IMHO если механизм введен в язык и нет никаких поползновений к изчзчезновению оного из стандарта - то грех не пользоваться(с умом).
2) Я же пока не гуру программирования, а в книжках для новичков (Мейерс, Страуструп ) рекомендуют использовать множ.наследования только в исключительных случаях.

А пальцем можно показать,где Страуструп это рекомендует ?Может я чего пропустил в этой жизни ;)

Кстати о птичках - есть еще один путь - включение сущьности .То-есть делаешь наследника QObject'a создаешь методы которые кидают нужные сигналы,а в наследника QGraphicsItem'а добавляешь мембера этого типа,методы которого и дергаешь ;) MS COM -forever ;) ...

Хотя если сами троли в демках не стесняються
Код:
class Mouse : public QObject, public QGraphicsItem
то IMHO юзать можно ;)