Qt - испускающие слоты вместо сигналов - PullRequest
6 голосов
/ 08 февраля 2010

Предположим, у меня есть виджет QPushButton, который подключен к слоту с помощью сигнала clicked (). Этот первый слот в свою очередь вызывает другой слот по ключевому слову emit. Второй слот берет аргумент из первого слота и что-то с ним делает. Это сработало, но из того, что я понимаю в схеме «сигналы-слоты», имеет смысл только излучать сигнал. Разве неправильно излучать слот вместо сигнала?

Ответы [ 3 ]

9 голосов
/ 08 февраля 2010

Если вы посмотрите на определение emit, вы увидите, что оно пустое. emit просто используется, чтобы указать, что сигнал излучается на этой линии. Поэтому выбрасывать слот не имеет смысла.

Слоты являются обычными функциями, вы можете вызывать их явно.

6 голосов
/ 08 февраля 2010

Да. Слот это функция. Вы можете просто вызвать слот, как и любую другую функцию в C ++ doSlotAction(params);. Только ключевые слова должны следовать за ключевым словом emit.

3 голосов
/ 08 февраля 2010

Просто чтобы завершить предыдущие ответы, сигналы - это действительно защищенные методы, реализованные moc, компилятором мета-объектов.

...