Russian Qt Forum

Qt => Вопросы новичков => Тема начата: sofen.ru от Январь 10, 2013, 15:23



Название: Чем сигналы-слоты отличаются от событий Дельфи?
Отправлено: sofen.ru от Январь 10, 2013, 15:23
Чем сигналы-слоты библиотеки Qt отличаются от событий Дельфи/С++ Билдер? У них есть какое-то принциальное отличие или это абсолютно одно и тоже?


Название: Re: Чем сигналы-слоты отличаются от событий Дельфи?
Отправлено: Пантер от Январь 10, 2013, 15:24
На сколько я помню делфи, принцип тот же.


Название: Re: Чем сигналы-слоты отличаются от событий Дельфи?
Отправлено: lit-uriy от Январь 10, 2013, 17:11
Нет, не одно и тоже, в Qt тоже есть обработчики событий (как в Дельфи).


Название: Re: Чем сигналы-слоты отличаются от событий Дельфи?
Отправлено: lit-uriy от Январь 10, 2013, 17:14
Сигналы и слоты - дальнейшее развитие шаблона программирования Наблюдатель, Observer (http://ru.wikipedia.org/wiki/Наблюдатель_(шаблон_проектирования))
позволяет реализовать компонентное программирование.
Т.е. два компонента могут ровным счётом ничего не знать друг о друге, а в неком главном компоненте вы соединяете сигналы и слоты первых двух, тем самым обеспечивая их взаимодействие.


Название: Re: Чем сигналы-слоты отличаются от событий Дельфи?
Отправлено: sofen.ru от Январь 10, 2013, 19:04
Нет, не одно и тоже, в Qt тоже есть обработчики событий (как в Дельфи).
Можно на примере в этом как-то убедиться?


Название: Re: Чем сигналы-слоты отличаются от событий Дельфи?
Отправлено: kambala от Январь 10, 2013, 19:38
например для «отлова» события нажатия кнопки клавиатуры на активном виджете нужно переопределить protected метод void QWidget::keyPressedEvent(QKeyEvent *event)


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

То есть по "смыслу" они имеют некоторое сходство, реализация же практически ничего общего не имеет.


Название: Re: Чем сигналы-слоты отличаются от событий Дельфи?
Отправлено: Alex_C от Январь 11, 2013, 10:34
Если ты только переходишь с Дельфи/Билдера на Qt, то для простоты перехода считай, что это "примерно" одно и тоже. Но очень правильно написал xokc - сходство только по смыслу. Лучше все же на эту тему почитать книги по Qt.


Название: Re: Чем сигналы-слоты отличаются от событий Дельфи?
Отправлено: lit-uriy от Январь 11, 2013, 23:04
Я давно, конечно, был в дельфи/билдере
Но, если забыть про QtDesigner/QtCreator, т.е. процесс рисования формы и использования автосоединения сигналов и слотов, которые были придуманы как раз для вчерашних дельфистов, то процесс кодирования всё же заметно отличается.
Вместо того чтобы сочинять пример, лучше посмотреть штатный пример Qt (http://www.doc.crossplatform.ru/qt/4.4.3/tutorials-tutorial-t2.html) (в новой версии документации его нет).
И в ещё этот (http://www.doc.crossplatform.ru/qt/4.4.3/tutorials-tutorial-t5.html). А вообще лучше просмотреть внимательно всё это (старое и очень толковое) учебное пособие.

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