Russian Qt Forum

Qt => Общие вопросы => Тема начата: Akon от Апрель 03, 2012, 08:23



Название: QObject должен быть первым базовым классом
Отправлено: Akon от Апрель 03, 2012, 08:23
Кто нить выяснял? В чем техническая причина сего ограничения?


Название: Re: QObject должен быть первым базовым классом
Отправлено: Makss от Апрель 03, 2012, 09:05
Не обязательно! смотря что вы хотите получить в результате наследования. Если нужен не гуёвый класс с механизмом сигнал-слот, то от QObject, иначе можно и не наследоваться


Название: Re: QObject должен быть первым базовым классом
Отправлено: mutineer от Апрель 03, 2012, 10:04
Кто нить выяснял? В чем техническая причина сего ограничения?

Скорее всего дело в особенностях moc - видимо он не настолько интелектуален, чтобы нормально отработать если наследник QObject не первый в списке


Название: Re: QObject должен быть первым базовым классом
Отправлено: sudo от Апрель 03, 2012, 14:41
Не обязательно! смотря что вы хотите получить в результате наследования. Если нужен не гуёвый класс с механизмом сигнал-слот, то от QObject, иначе можно и не наследоваться

Не обязательно наследоваться от QObject? Ясно дело. Не обязательно, чтобы QObject был первым базовым? Ну да, Нокиа хрень какую-то написала в документации. Гуи тут при чём? Для чего нужен QObject, знаем?


Название: Re: QObject должен быть первым базовым классом
Отправлено: Bepec от Апрель 03, 2012, 14:53
;) меня эта тема сегодня спасла от сумасшедствия. Пытался часа полтора привить к ГрафикИтему сигналы :D


Название: Re: QObject должен быть первым базовым классом
Отправлено: Igors от Апрель 03, 2012, 15:01
Помню эту рекомендацию (QObject должен быть первым), но также помню что никаких реальных аргументов не увидел. Видимо "если QObject первый, то точно все будет работать, а иначе хз". И действительно, ведь запомнить букварь куда проще чем чего-то там думать, да еще ошибаться  :)


Название: Re: QObject должен быть первым базовым классом
Отправлено: kambala от Апрель 03, 2012, 15:02
;) меня эта тема сегодня спасла от сумасшедствия. Пытался часа полтора привить к ГрафикИтему сигналы :D
Код
C++ (Qt)
class MyItem : public QObject, public QGraphicsItem
{
   Q_OBJECT
   ...
};
не?


Название: Re: QObject должен быть первым базовым классом
Отправлено: sudo от Апрель 03, 2012, 15:04
Метод void Moc::checkSuperClasses(ClassDef* def)
В коде из списка базовых классов вытаскивается первый. Сделано это скорее всего из-за каких-то языковых ограничений при наследовании. Кто нагуглит, киньте ссылкой чтоль


Название: Re: QObject должен быть первым базовым классом
Отправлено: Bepec от Апрель 03, 2012, 15:07
Именно kambala, именно.

Я то, прости тролле, когда то об этом читал, но забыл ;)

Блатыкался час, мб даже 2. Потом темку увидел и осенило ;)