无法连接到Qt中来自外部类的信号

时间:2018-01-10 15:21:13

标签: qt signals-slots

我有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";
    }
};

正如您所看到的,我尝试连接signalslot,但似乎slot未被触发。我得到的唯一输出是:Signal emitted

为什么插槽没有连接,我该怎么做呢? 感谢

1 个答案:

答案 0 :(得分:4)

您正在从EmitSignal的构造函数发出信号。该构造函数将在ConnectSlot构造函数的主体开始执行之前运行。

因此,在建立连接之前会发出信号。

您需要更改代码,以便在信号被触发之前建立连接。