сигналы и слоты, передача указателя на мой объект |
Здравствуйте, гость ( Вход | Регистрация )
сигналы и слоты, передача указателя на мой объект |
ieroglif |
31.1.2009, 15:54
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 17 Регистрация: 19.1.2009 Из: планета Земля Пользователь №: 496 Спасибо сказали: 0 раз(а) Репутация: 0 |
ситуация:
имеется ядро, которое подключает к себе кучу самых разных модулей (реализованных в виде шаред библиотек). модули хотят друг с другом общаться. у всех имеется единый интерфейс (логично) от которого они наследуются и по которому они и подгружаются. но конкретная реализация каждого модуля своя. (что, в целом, тоже логично) пример: модуль который отображает значок и меню в трее и модуль игры нарды. не факт что модуль нардов будет, и не факт, что будет модуль трея - это зависит от конкретной установки. но хочется, что бы если они присутсвували оба - модуль "нарды" докидывал в меню трея кнопку "играть в нарды". на данный момент реализация модульного интерфейса такая:
и на данный момент алгоритм вижу следующий: 1. загружаются модули 2. при загрузке они соединяют слоты сигналы sendCommand - getCommand с ядром в обе стороны. Ядро же на какие-то комманды (типа выход) реагирует, а вообще принятый сигнал перекидывает всем модулям, которые уже разбирают на какие комманды и как им реагировать. 3. модуль "нарды" при запуске кидае комманду "добавить элемент в трей-меню". 4. на него реагирует модуль "трей" (если присутсвует, конечно) и коннектит слоты-сигналы с объектом, который пришёл в сигнале. 5. модуль "трей" по новому коннекту кидает что-то типа "готов" и модуль "нарды" закидывает туда готовый QAction* для меню. 6. модуль "трей" разрывает слот-сигнал с "нардами". тем самым я добиваюсь независимости модулей друг от друга. "нарды" знают, что надо отправить запрос ядру на добавления меню, и что если кто-то им потом ответит по другому слоту, кинуть туда элемент меню, а "трей" знает, что если кто-то у него попросит место в трее, то ему пофик кто это - лишь бы кинули потом элемент меню. в целом мне схема нравится, но буду рад другим идеям. на данный момент проблема в том, что я не понимаю, как через слот-сигнал передать указатель на любой объект. в данном примере этот объект - QAction, а другие модули могут меняться какими-то совсем другими данными, объектами и чем угодно. как реализовать? может есть ссылки на маны по построению подобных модульных приложений и их связок? буду рад ответу сюда, или по координатам ася 133733457 скайп ieroglif.ru jabber: ieroglif@jabber.myau.su |
|
|
Константин |
18.2.2009, 21:49
Сообщение
#2
|
Студент Группа: Участник Сообщений: 69 Регистрация: 9.2.2009 Пользователь №: 539 Спасибо сказали: 15 раз(а) Репутация: 1 |
мужики, чего хернёй маетесь?
слоты - это обычные методы, помеченные макросом Q_SLOTS (или slots) для мока. т.о. виртуальный слот можно переопределить и он будет отрабатывать при эмите свазанного сигнала - никаких тонкостей. если слот невиртуальный, догадайтесь сами что и как будет работать ) |
|
|
Текстовая версия | Сейчас: 30.11.2024, 3:41 |