![]() |
|
|
![]()
|
|
| null56 |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Как я понял, в Qt существует два способа общения между объектами, через сигналы и сообщения...
Помогите понять разницу и главное назначение, что для чего нужно использовать.... Тут набрел еще на одну функцию, которая позволяет использовать определенные пользователем и фильтровать очередь сообщений
Получается так: если мы точно знаем кому хотим послать сообщение, то эффективней всего использовать на одном конце провода
а на другом
если же мы хотим более универсального механизма, то надо использовать механизм сигналов и слотов? Я правильно понимаю такие разделение на сигналы и сообщения? Или же концепция совсем другая? Объясните пожалуйста, что я не понимаю в этом механизме? Заранее благодарен за помощь |
||||||
|
|||||||
| pan2004 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 357 Регистрация: 28.7.2007 Репутация: 6 Всего: 9 |
Суть такова:
1. Объект А сигнализирует другому объекту о изменении своего состояния. Так работает механизм сигнал-слот. Например, когда юзер нажимает на кнопку, изменяется ее(кнопки) внутренее состояние, и она посылает соответствующий сигнал(вопрос, ловит ли его кто или нет - неважно). 2. Система сообщает кнопке о том, что на нее нажали. Здесь источником eventа является какое-то внешнее воздействие(не обязательно объект, и не обязательно из той же программы). Event посылается напрямую тому, кого он касается, (механизм перехватить его из другого места конечно же есть - чисто для удобства). |
|||
|
||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Да, спасибо, это понятно
Вопрос в том, что правильнее использовать в своих целях, для общения между своими объектами... получается signal является более универсальным и абстрактным средстом, так как не предназначен изначально не для какого объекта? Но если следовать сути, то по хорошему, нужно посылать сообщения конкретным объектам, чтобы обеспечить четкое взаимодействие между объектами, а не генерить просто так сигналы непонятно кому.... Как я понял, для своих целей, есть над чем подумать, что правильнее использовать |
|||
|
||||
| kuzulis |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 5.9.2007 Репутация: нет Всего: 1 |
Мне кстати тоже очень интересен этот вопрос!
Я читал где-то в чем разница между сигналами и слотами (на примере обработки событий от мыши и т.п) но не могу найти где это.. суть (как я понял ИМХО ) в том, что : 1. события - это от операционной системы идут (типа от устройств и драйверов) 2. сигналы и слоты - это обертки над событиями (типа уже от QT объектов) |
|||
|
||||
| null56 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Не совсем.... это троли говорят, что типа пользуйтесь сигналами, в то время, что сообщения лучше переопределять и анализировать.... не обязательно от системы....
Вот пример моего сообщения класс помошник
main
Набей и посмотри... код QEvent::User == 1000 |
||||
|
|||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |