Почему слоты в PyQt - PullRequest
       39

Почему слоты в PyQt

2 голосов
/ 23 октября 2011

Я изучаю библиотеку Qt. Недавно я столкнулся с понятием slots и до сих пор понимаю их как функции, которые выполняются как реакция на определенные события. Это только это или что-то еще?

Почему они выбрали такое экзотическое имя Слоты для чего-то такого обычного? Это слово имеет много значений. Какое значение они намеревались подумать о slots в Qt?

спасибо

Ответы [ 2 ]

2 голосов
/ 23 октября 2011

Термины signal и slot несколько не совпадают.

Лучшим выбором могли бы быть signal и receiver или connector и slot.

В C ++ сигнал может подключаться только к функции, определенной как слот. Попытка подключить сигнал к обычной функции была бы такой же, как попытка подключить USB-кабель к порту Ethernet.

Однако в PyQt это различие гораздо менее важно, поскольку любой вызываемый может быть подключен к сигналу, а не только к предопределенным слотам.

При этом более поздние версии PyQt также предоставляют pyqtSlot decorator , который можно использовать для определения слота с несколькими различными сигнатурами. И вообще, в PyQt более эффективно подключаться к предопределенному слоту (будь то C ++ или PyQt), чем к обычному вызываемому python.

Для получения полной информации о поддержке сигналов и слотов в PyQt см. Справочное руководство .

2 голосов
/ 23 октября 2011

Слоты идут с сигналами. Вы подключаете сигналы к слотам. Это основная концепция в самом Qt, она не является специфичной для PyQt.

Документация Qt содержит детали: Сигналы и слоты .

Это очень удобная концепция, обеспечивающая довольно чистое разделение слоев в вашем коде.

Слоты сами по себе являются простыми функциями (в C ++), их можно использовать как обычные функции, а также как «приемники сигнала».

...