Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

QT: QObject multiple inheritance and virtual signals

414
03 ноября 2013 года
CassandraDied
763 / / 24.05.2012
Хай.
Есть два класса: класс приложения, класс интерфейса. Оба имеют сигналы, оба наследуются от QObject. Но, так как невозможно отнаследоваться от двух QObject'ов, приходится класс интерфейса делать просто чистым абстрактным. Это некруто.
Есть ещё варианты решить эту проблему?
Мне только нужно, чтобы некоторые классы имели один набор сигналов и, может, слотов, при этом я не хочу в каждом из классов переопределять каждый чистый виртуальный сигнал — много кода.

UPD: сигналы не могут быть виртуальными. Теперь я вообще не знаю, что делать, хех.
326
03 ноября 2013 года
sadovoya
757 / / 19.11.2005
Фреймворки типа Qt на то и фреймворки (каркасы), что навязывают определенные шаблоны проектирования. Я что-то не встречал (возможно пока) множественного наследования в программах на Qt. Всюду использование, делегирование задач.

Есть шикарная книга "банды 4-х" (Гамма, Хелм, Джонсон, Влиссидес. "Приемы объектно-ориентированного проектирования. Паттерны проектирования"). Сильно склоняет от тяготения к наследованию в направлении использования и т.п. И к максимальному отделению интерфейса от реализации (к чистым интерфейсным классам без реализации). Очень ценная книга, советую. Qt как мне кажется по тем-же "ноу-хау" делалась.

Еще в Qt можно использовать обычные с++ классы (созданные без макроса Q_OBJECT и не наследующие Q-классам). Только на них не распространяются сигналы/слоты и прочее Qt-макропрограммирование. И уборка мусора делается вручную.
414
03 ноября 2013 года
CassandraDied
763 / / 24.05.2012
И как мне создать интерфейс чистый виртуальный класс с сигналами?
326
03 ноября 2013 года
sadovoya
757 / / 19.11.2005
Я этого и не предлагал. Чистые классы лежат на уровне внутренней реализации Qt. Это просто пример к книжке о проектировании. А прикладным программам надо следовать логичным для Qt шаблонам (владение / делегирование).

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог