Russian Qt Forum
Июня 26, 2025, 09:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

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

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

Сообщений: 5877


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


Просмотр профиля 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]   Вверх
  Печать  
 
Перейти в:  


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