Предположим, у меня есть виджет QPushButton, который подключен к слоту нажатием(). Этот первый слот, в свою очередь, вызывает другой слот с помощью ключевого слова emit. Второй слот принимает аргумент из первого слота и что-то делает с ним. Это сработало, но из того, что я понимаю в шаблоне сигналов-слотов, имеет смысл испускать сигнал. Неправильно ли вы выбрасывать слот вместо сигнала?Qt - испускающие слоты вместо сигналов
5
A
ответ
8
Если вы посмотрите на определение emit, вы увидите, что он пуст. emit используется только для обозначения того, что на этой линии выдается сигнал. Поэтому испускание слота не имеет смысла.
Слоты - это обычные функции, вы можете их явно называть.
5
Да. Слот - это функция. Вы можете просто вызвать слот, как любая другая функция, в C++ doSlotAction(params);
. Только ключевые слова должны соответствовать ключевому слову emit
.
3
Для завершения предыдущих ответов сигналы являются действительно защищенными методами, реализованными компилятором moc, метаобъектом.
Это передает неправильный смысл. излучение фактически передает смысл отправки сигнала и связанного слота, который вызывается назад, где, поскольку излучение _keyword_ ничего не делает, это просто для лучшей читаемости. – drahnr