почему у сигнала соединения есть аргумент, а у слота его нет?

Qt 4.8.1, Оригинальный код просто так:

connect(this->m_CodeMemoryComboBox, SIGNAL(currentIndexChanged(QString)),
this, SLOT(updateCodeMemoryFormate()));

Это действительно смущает меня, [вопрос] Могу ли я передать аргумент функции слота при использовании QObject :: connect?
Это говорит мне, что аргумент должен совпадать, но что здесь произойдет, код будет неправильным, если я уберу этот аргумент.

0

Решение

Документация Qt описывает это. Ищите «(На самом деле слот может иметь более короткую подпись, чем сигнал, который он получает, потому что он может игнорировать дополнительные аргументы.)» Под заголовком «Сигналы и слоты»

В принципе, вы можете подключить N-параметр сигнала на Mслот параметра, если M <= N и первый M параметры совпадают по типу. Любые оставшиеся аргументы из сигнала игнорируются слотом.

4

Другие решения

QT Doc говорит,

Механизм сигналов и слотов является типобезопасным: сигнатура сигнала должна совпадать с сигнатурой принимающего слота. (На самом деле слот может иметь более короткую подпись, чем сигнал, который он получает, потому что он может игнорировать дополнительные аргументы.)

1

По вопросам рекламы [email protected]