У меня есть класс X со слотом и класс Y с сигналом. Я настраиваю соединение из класса X и создаю открытый метод в классе Y, чтобы излучать сигнал из класса X (я не уверен, что этот шаг был необходим).Qt сигналы и слоты в разных классах
Затем, если я вызываю этот метод из класса 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
}
}
Вы можете указать код? я не могу точно понять, что вы пытаетесь сказать – alegen
Нет, вам нужно установить соединение только один раз. Пожалуйста, разместите часть своего кода. – Ammar
Это очень сложный код, поэтому я напишу немного псевдо, чтобы лучше объяснить вопрос. –