Тип аргумента для сигнала и слота Qt, имеет ли значение задание отступников?

Для сигнала и слота типа ниже

signals: void textChanged(const QString &); public slots: void setText(const QString & text) 

тип аргумента textChanged и setText, похоже, работает нестабильно для const и & . Имеет ли постоянная и ссылочная квалификация какую-либо разницу по сравнению с использованием только QString?

 QObject::connect(a,SIGNAL(textChanged(QString)),b,SLOT(setText(QString))); QObject::connect(a,SIGNAL(textChanged(const QString &)),b,SLOT(setText(const QString &))); 

EDIT: я не заметил окно вывода, отображающее сообщения об ошибках, когда в SIGNAL или SLOT используется несовместимый тип. Я думал, что механизм слота сигнала способен обнаруживать ошибку типа аргумента во время компиляции.

Qt проверяет нормализованную подпись , что означает

Нормализация уменьшает пробелы до минимума, при необходимости перемещает «const» на фронт, удаляет «const» из типов значений и заменяет ссылки const со значениями.

Отказ от ответственности: мой qt довольно ржавый, но механизм сигнала / слота по-прежнему остается только вызовом функций C ++. Если механизм сигнала / слота фактически копирует объекты во внутреннее хранилище, мои извинения (вам нужно проверить страницы Qt, есть большой в сигналах / слотах afaik), поскольку биты ниже будут только релевантными в контексте C ++, а не в контексте C ++ + Qt.

Если вы не укажете ссылку, строка будет скопирована (и наличие константы не имеет значения, любые внесенные в нее изменения останутся в функции).
Если вы оставите в ссылке, но выберете const, вы разрешите методу изменять строку, которую вы ему даете. Они оба работают, но выполняют разные вещи с передаваемым вами объектом (количество копий / возможность сохранения изменений).

Предлагаю вам прочитать следующие ресурсы:

(по корректности const) https://isocpp.org/wiki/faq/const-correctness

(по ссылкам) https://isocpp.org/wiki/faq/references

чтобы точно понять, что такое прохождение параметра и как void foo(const A&) / void foo(const A) / void foo(A&) / void foo(A) все разные.

  • Разница между типами string и char в C ++
  • Каковы различия между типами () и isinstance ()?
  • Интерфейсы Java и типы возврата
  • make arrayList.toArray () возвращает более конкретные типы
  • Как вы знаете переменный тип в java?
  • JAXB: Как изменить имена classов, сгенерированных XJC, когда тип attr указан в XSD?
  • Преобразовать строку в тип C #
  • Какова цель вопросительного знака после типа (например: int? MyVariable)?
  • Когда использовать значения без знака над подписанными?
  • Как напечатать тип или class переменной в Swift?
  • Вычисление переменной с использованием переменной типа
  • Давайте будем гением компьютера.