Название: сигналы и слоты Отправлено: nixman05 от Апрель 25, 2009, 20:04 Возможно ли определение сигнала/слота в классе не унаследованном от QObject ?
Название: Re: сигналы и слоты Отправлено: pastor от Апрель 25, 2009, 20:19 нет
Название: Re: сигналы и слоты Отправлено: nixman05 от Апрель 25, 2009, 23:03 Как тогда решить следующую задачу :
Есть несколько классов. У некоторых из них имеются общие родители в которых определены сигналы и слоты. Часть из этих классов имеют множественное наследование. Но тогда у родителей будет общий родитель QObject. И возникает случай ромбовидного наследования, а данная ситуацию не поддерживается moc. Можно ли как-нибудь обойти данную ситуацию? Название: Re: сигналы и слоты Отправлено: ритт от Апрель 26, 2009, 02:32 пересмотреть архитектуру приложения
Название: Re: сигналы и слоты Отправлено: vtl от Апрель 27, 2009, 13:46 хм, а виртуальное наследование из C++ убрали что-ли?
Название: Re: сигналы и слоты Отправлено: Eugene Efremov от Апрель 27, 2009, 14:43 хм, а виртуальное наследование из C++ убрали что-ли? Виртуальное наследование ломает MOS. Иными словами — если QObject унаследовать виртуально, то оно повиснет на первом же сигнале (в лучшем случае).Так что в данном контексте можно только посоветовать разнести функционал, использующий множественное наследование и функционал, использующий слоты/сигналы, по разным классам... Название: Re: сигналы и слоты Отправлено: kitov от Апрель 27, 2009, 22:45 Или как вариант использование не Qt signal/slot механизма , например из буста или самописного .
Название: Re: сигналы и слоты Отправлено: Alex Custov от Апрель 27, 2009, 23:14 есть ещё libsigc++
Название: Re: сигналы и слоты Отправлено: ритт от Апрель 28, 2009, 01:00 вот моразм
Название: Re: сигналы и слоты Отправлено: nixman05 от Апрель 30, 2009, 20:10 хм, а виртуальное наследование из C++ убрали что-ли? Виртуальное наследование ломает MOS. Иными словами — если QObject унаследовать виртуально, то оно повиснет на первом же сигнале (в лучшем случае).Так что в данном контексте можно только посоветовать разнести функционал, использующий множественное наследование и функционал, использующий слоты/сигналы, по разным классам... Разнести функционал не получается... В общем следующая ситуация: Исходные данные программа получает из двух источников файла и базы данных. Следовательно существуют два различных класса: один реализует работу с файлом, а другой с базой. У них есть общие сигналы и слоты которые выносятся в родительский класс. Также существует еще один вид данных которые сохраняются/загружаются отдельной сущностью, реализуемой еще одним классом (условие задачи). У этого класса и у первого класса, взаимодействующего с данными также существуют общие слоты, которые необходимо вынести в родительский класс. Но при этом у родительских классов имеется общий предок QObject, что запрещает moc. И как можно обойти данную ситуацию? Название: Re: сигналы и слоты Отправлено: Eugene Efremov от Апрель 30, 2009, 21:12 В общем следующая ситуация: Исходные данные программа получает из двух источников файла и базы данных. Следовательно существуют два различных класса: один реализует работу с файлом, а другой с базой. У них есть общие сигналы и слоты которые выносятся в родительский класс. Также существует еще один вид данных которые сохраняются/загружаются отдельной сущностью, реализуемой еще одним классом (условие задачи). У этого класса и у первого класса, взаимодействующего с данными также существуют общие слоты, которые необходимо вынести в родительский класс. Но при этом у родительских классов имеется общий предок QObject, что запрещает moc. По такому описанию посоветовать что-то конкретное довольно сложно. Если в общих чертах — то можно попробовать разбить объекты на как можно более мелкие части, по возможности не связанные друг с другом. Вполне возможно, что после этого слоты разъедутся по разным объектам и для них можно будет организовать независимые друг от друга иерархии. P.S. Советую поискать в сети книги: М. Файлер «Рефакторинг» и Э. Гамма и др. «Паттерны проектирования». Там как раз примерно про это... Название: Re: сигналы и слоты Отправлено: ритт от Апрель 30, 2009, 23:31 что мешает сделать
Код: class MyClass : public Object1 а то и вообще Object2 сделать защищённым (protected) членом класса Object1 и опционально сделать Object1 другом Object2. тогда MyClass будет иметь доступ к методам Object(1|2) и даже сможет использовать сигналы обоих. |