Я работаю над проектом, где мне нужно создать соединение с сигнальным слотом Qt от конструктора класса к классу, который он инициализируется внутри. Вот как выглядят коды. Я хочу, чтобы оба упомянутых ниже соединения работали, но из того, что предлагает вывод, работает только соединение №1. Мой вопрос, как сделать соединение # 2 работы!Qt signal-slot confusion
класс А
class classA :public QWidget{
Q_OBJECT
public:
classA(){
emit this->demoSignalA();
}
signals:
void demoSignalA();
public slots:
void demoSlotA(){qDebug()<<"SIGNAL FROM CLASS B"}
};
Класс B
class classB :public QWidget{
Q_OBJECT
public:
classB(){
classA *a = new classA;
connect(this, SIGNAL(demoSignalB()), a, SLOT(demoSlotA())); //WORKS
connect(a, SIGNAL(demoSignalA()), this, SLOT(demoSlotB())); //DOESN'T WORK
emit this->demoSignalB();
}
signals:
void demoSignalB();
public slots:
void demoSlotB(){qDebug()<<"SIGNAL FROM CLASS A";}
};
ОСНОВНЫЕ
int main(int argc, char *argv[]){
QApplication a(argc, argv);
...
...
classB b; //INVOCATION INITIATED
return a.exec();
}
ВЫВОД
SIGNAL FROM CLASS B