我有EmitSignal class
这样:
class EmitSignal : public QObject
{
Q_OBJECT
public:
EmitSignal() {
emit emittedSignal();
qDebug() << "Signal emitted";
}
signals:
void emittedSignal();
};
在ConnectSlot class
中,就像这样:
class ConnectSlot : public QMainWindow
{
Q_OBJECT
public:
ConnectSlot() {
connect(&emitSignalObject, &EmitSignal::emittedSignal, this, &ConnectSlot::connectToSlot);
}
EmitSignal emitSignalObject;
public slots:
void connectToSlot() {
qDebug() << "Connected";
}
};
正如您所看到的,我尝试连接signal
和slot
,但似乎slot
未被触发。我得到的唯一输出是:Signal emitted
。
为什么插槽没有连接,我该怎么做呢?
感谢
答案 0 :(得分:4)
您正在从EmitSignal
的构造函数发出信号。该构造函数将在ConnectSlot
构造函数的主体开始执行之前运行。
因此,在建立连接之前会发出信号。
您需要更改代码,以便在信号被触发之前建立连接。