Russian Qt Forum
Ноябрь 25, 2024, 18:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Чем сигналы-слоты отличаются от событий Дельфи?  (Прочитано 5242 раз)
sofen.ru
Гость
« : Январь 10, 2013, 15:23 »

Чем сигналы-слоты библиотеки Qt отличаются от событий Дельфи/С++ Билдер? У них есть какое-то принциальное отличие или это абсолютно одно и тоже?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Январь 10, 2013, 15:24 »

На сколько я помню делфи, принцип тот же.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Январь 10, 2013, 17:11 »

Нет, не одно и тоже, в Qt тоже есть обработчики событий (как в Дельфи).
Записан

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Январь 10, 2013, 17:14 »

Сигналы и слоты - дальнейшее развитие шаблона программирования Наблюдатель, Observer
позволяет реализовать компонентное программирование.
Т.е. два компонента могут ровным счётом ничего не знать друг о друге, а в неком главном компоненте вы соединяете сигналы и слоты первых двух, тем самым обеспечивая их взаимодействие.
Записан

Юра.
sofen.ru
Гость
« Ответ #4 : Январь 10, 2013, 19:04 »

Нет, не одно и тоже, в Qt тоже есть обработчики событий (как в Дельфи).
Можно на примере в этом как-то убедиться?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #5 : Январь 10, 2013, 19:38 »

например для «отлова» события нажатия кнопки клавиатуры на активном виджете нужно переопределить protected метод void QWidget::keyPressedEvent(QKeyEvent *event)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #6 : Январь 11, 2013, 09:17 »

Тут есть неоднозначность с терминологией. Если под "событиями Delphi" понимать методы, которые могут вызываться как callback  в ответ на изменение некоторого property (типа OnFormCreate), то отличия в следующем:
1. В Дельфи такое "событие" не может быть связано более чем с одним обработчиком. В Qt - со сколькими угодно.
2. В Дельфи обработка событий потоконебезопасна, в Qt - безопасна (с оговорками).

То есть по "смыслу" они имеют некоторое сходство, реализация же практически ничего общего не имеет.
Записан
Alex_C
Гость
« Ответ #7 : Январь 11, 2013, 10:34 »

Если ты только переходишь с Дельфи/Билдера на Qt, то для простоты перехода считай, что это "примерно" одно и тоже. Но очень правильно написал xokc - сходство только по смыслу. Лучше все же на эту тему почитать книги по Qt.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #8 : Январь 11, 2013, 23:04 »

Я давно, конечно, был в дельфи/билдере
Но, если забыть про QtDesigner/QtCreator, т.е. процесс рисования формы и использования автосоединения сигналов и слотов, которые были придуманы как раз для вчерашних дельфистов, то процесс кодирования всё же заметно отличается.
Вместо того чтобы сочинять пример, лучше посмотреть штатный пример Qt (в новой версии документации его нет).
И в ещё этот. А вообще лучше просмотреть внимательно всё это (старое и очень толковое) учебное пособие.

П.С.
Под старым понимается, только то, что его убрали из документации, но оно будет полностью работать и компилироватся с Qt >= 4.3
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.053 секунд. Запросов: 23.