Тип аргумента для сигнала и слота 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) все разные.

  • Почему некоторые люди предпочитают «T const &» над «const T &»?
  • Преобразовать массив байтов в целое число на Java и наоборот
  • Что круто о дженериках, зачем их использовать?
  • Использование `inline` в F #
  • Каков тип строкового литерала в C ++?
  • что такое неподписанный тип данных?
  • Являются ли HLists не более чем сложным способом написания кортежей?
  • Как проверить соответствие типа переменной Тип, хранящийся в переменной
  • Когда использовать значения без знака над подписанными?
  • Как определить разные типы для одного и того же classа в C ++
  • Как напечатать тип или class переменной в Swift?
  • Interesting Posts

    Открыть Fancybox (или equiv) из типа ввода формы = “отправить”

    как получить список баз данных «Схема» имен MySql с помощью java JDBC

    Как я могу получить идентификатор элемента с помощью jQuery?

    Должно ли быть имя параметра?

    Экран Blackout / Flicker для ноутбука; Прекрасно работает на внешнем мониторе

    Конец комбинации Ves не работает, проблема с выходом sub?

    Имитировать низкий уровень заряда аккумулятора и низкую память в Android

    ES6 – преобразовать из ‘require’ в ‘import’

    $ (this) .serialize () – Как добавить значение?

    Как загрузить Windows 10 1511 ISO без использования средства создания носителя?

    Как нам получить отдельную запись, когда / устарел в версии 2.4?

    AppEngine: получить текущую версию приложения-приложения

    Как использовать аналитику для настольных приложений?

    Как получить (gci) .count, чтобы возвращать правильные числовые значения для пустых или одиночных списков?

    MVC4 Scaffolding Add Controller дает ошибку «Не удается получить метаданные …»

    Давайте будем гением компьютера.