无法在 Qt 中连接到来自外部 class 的信号
Unable to connect to signal from outside class in Qt
我有一个 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
。
为什么插槽未连接,我该如何正确连接?
谢谢
您正在从 EmitSignal
的构造函数发出信号。该构造函数将 运行 在 ConnectSlot
的构造函数主体开始执行之前。
因此信号会在建立连接之前发出。
您需要更改代码,以便在触发信号之前建立连接。
我有一个 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
。
为什么插槽未连接,我该如何正确连接?
谢谢
您正在从 EmitSignal
的构造函数发出信号。该构造函数将 运行 在 ConnectSlot
的构造函数主体开始执行之前。
因此信号会在建立连接之前发出。
您需要更改代码,以便在触发信号之前建立连接。