スロットのあるクラス X と信号のあるクラス Y があります。クラス X からの接続をセットアップし、クラス Y にパブリック メソッドを作成して、クラス X からシグナルを送信しました (この手順が必要かどうかはわかりません)。
次に、クラス X からそのメソッドを呼び出すと、シグナルが発行され、スロットが実行されます。しかし、クラス Y からシグナルを発信すると、スロットが実行されず、その理由がわかりません。
クラスYでも接続を確立してもよろしいですか?
この疑似コードは、私が望むものを説明しようとします:
class X : public QWidget {
Q_OBJECT
X(){
connect(Y::getInstance(), SIGNAL(updateSignal(int)), this, SLOT(updateStatus(int)));
Y::getInstance().emitSignal(someValue); // Works
}
public slots:
void updateStatus(int value);
}
class Y : public QObject {
Q_OBJECT
Y(){
}
public:
Y getInstance();
void emitSignal(int value) {
emit updateSignal(value);
}
signal:
void updateSignal(int value);
}
class Z : public Y {
Z(){
}
init(){
emitSignal(someValue); // Doesn't work
}
}