Я использую старый синтаксис соединения до сих пор. Сегодня я хочу изменить свой проект на новый синтаксис подключения, например:
#include <QDebug>
class Telefon : public QObject {
Q_OBJECT
public:
void letRing() {
qDebug() << "letRing";
emit ring();
}
signals:
void ring();
public slots:
void onRing() {
qDebug() << "onRing";
}
};
class Cable : public QObject {
Q_OBJECT
signals:
void ring();
};
int main(int argc, char *argv[])
{
Telefon *fon1 = new Telefon();
Telefon *fon2 = new Telefon();
Cable *cable = new Cable();
// old connection way
// connect(fon1, SIGNAL(ring()), cable, SIGNAL(ring()));
// connect(cable, SIGNAL(ring()), fon2, SLOT(onRing()));
// new connection way
QObject::connect(fon1, &Telefon::ring, cable, &Cable::ring); // <-- This is the problem
QObject::connect(cable, &Cable::ring, fon2, &Telefon::onRing);
fon1->letRing();
return 0;
}
Компиляция прошла без ошибок. Но телефон никогда не звонит: (
Вывод должен быть:
letRing
onRing
Но это:
letRing
Я покопался в коде Qt и обнаружил, что соединения SIGNAL-SLOT действительны, но соединения SIGNAL-SIGNAL не работают таким образом. Кроме того, он не генерирует ошибки при компиляции. Есть ли способ соединить СИГНАЛЫ новым способом / синтаксисом?