Я столкнулся с этим кодом в документации Qt:
Counter a, b;
QObject::connect(&a, &Counter::valueChanged,
&b, &Counter::setValue);
a.setValue(12); // a.value() == 12, b.value() == 12
b.setValue(48); // a.value() == 12, b.value() == 48
Почему перед a и b и перед функциями стоит &? a — излучающий объект (предоставляет сигнал), а b — принимающий объект (имеет слот), так почему же здесь берется их адрес, а не просто используются сами объекты (и берется адрес объекта, если я не ошибся)? В других примерах Qt это не так (адрес не используется, используются сами объекты)
Я не слишком уверен, как работают & перед вызовами функций (т.е. Counter::valueChanged и Counter::setValue)... Я думаю, что это заставляет их возвращаться по ссылке, но я не уверен, насколько это важно здесь.
Наконец, почему нет ключевых слов SLOT и SIGNAL? Разве это не должно быть SIGNAL(Counter::valueChanged) и SLOT(Counter::setValue)? Опять же, это то, что я видел в других примерах QObject:connect, и этот пример не имеет для меня смысла.
Любая помощь приветствуется!
QObject::connect
ожидает указатели. - person drescherjm   schedule 10.06.2019QObject::connect
- person Dimitry Ernot   schedule 10.06.2019