Для сигнала и слота ниже типа
signals:
void textChanged(const QString &);
public slots:
void setText(const QString & text)
тип аргумента textChanged и setText, кажется, работает invarable из константы и и. Постоянная и ссылочная квалификация имеют какое-либо значение по сравнению только с использованием QString?
QObject::connect(a,SIGNAL(textChanged(QString)),b,SLOT(setText(QString)));
QObject::connect(a,SIGNAL(textChanged(const QString &)),b,SLOT(setText(const QString &)));
Править: Я не заметил окна вывода, показывающего сообщения об ошибках, когда существует несовместимый тип, используемый в СИГНАЛЕ или СЛОТЕ. Я думал, что механизм слота сигнала способен к обнаружению ошибки типа аргумента во время компиляции.
Qt проверяет нормализованную подпись, что означает
Нормализация уменьшает количество пробела до Минимум, перемещает "консте" на фронт где уместно, удаляет "const из типов значений и заменяет const ссылки со значениями.
Отказ от ответственности: мой qt довольно ржавый, но механизм сигнала / слота по-прежнему представляет собой просто вызовы функций C ++. Если механизм сигнала / слота действительно копирует объекты во внутреннее хранилище, приношу свои извинения (вам нужно проверить страницы Qt, есть большой по сигналам / слотам afaik) - поскольку приведенные ниже биты будут актуальны только в контексте C ++, не в контексте C ++ + Qt.
Если вы не укажете ссылку, строка будет скопирована (и наличие константы не имеет значения, любые внесенные в нее изменения останутся только в функции).
Если вы оставите ссылку, но уберете константу, вы позволите методу изменять строку, которую вы ему даете. Они оба работают, но делают разные вещи с переданным вами объектом (количество копий / возможность сохранения изменений).
Я предлагаю вам прочитать следующие ресурсы:
(о корректности констант) 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)
все разные.