如何将信号连接到 2 个共享库之间的槽
How to connect signals to slots between 2 shared libraries
我有 2 个共享库。我是第一个,我为特定的 class.
实现了一些核心组件
class CoreClass : public QObject
{
Q_OBJECT
public:
void doSomeStuff();
signals:
void aSignal();
}
在第二个中,我为此实现了一些小部件特定选项 class:
class WidgetClass : public QWidget
{
Q_OBECJT
public:
WidgetClass();
private:
CoreClass* __core;
}
现在我想将来自 CoreClass
的信号连接到来自 QWidget
的 WidgetClass
的插槽。
WidgetClass::WidgetClass()
: __core(new CoreClass)
{
connect(__core, &CoreClass::aSignal, this, qOverload<>(&QWidget::update));
}
我希望在 __core
发出信号 aSignal
时更新 widget
,但它没有。
====================更新=================== ======
那是我的错。连接没有问题。我只是错过了调用函数,它调用了 connect
函数。
您的代码似乎是正确的,不过您应该尝试这些操作以确保安全。
QObject::connect
return 可以转换为 bool
的 QMetaObject::Connection,因此您可以在运行时验证连接是否已按预期创建。
还要确认您是在发出信号的对象与其他实例之间创建连接,否则它将永远无法工作。
我有 2 个共享库。我是第一个,我为特定的 class.
实现了一些核心组件class CoreClass : public QObject
{
Q_OBJECT
public:
void doSomeStuff();
signals:
void aSignal();
}
在第二个中,我为此实现了一些小部件特定选项 class:
class WidgetClass : public QWidget
{
Q_OBECJT
public:
WidgetClass();
private:
CoreClass* __core;
}
现在我想将来自 CoreClass
的信号连接到来自 QWidget
的 WidgetClass
的插槽。
WidgetClass::WidgetClass()
: __core(new CoreClass)
{
connect(__core, &CoreClass::aSignal, this, qOverload<>(&QWidget::update));
}
我希望在 __core
发出信号 aSignal
时更新 widget
,但它没有。
====================更新=================== ======
那是我的错。连接没有问题。我只是错过了调用函数,它调用了 connect
函数。
您的代码似乎是正确的,不过您应该尝试这些操作以确保安全。
QObject::connect
return 可以转换为 bool
的 QMetaObject::Connection,因此您可以在运行时验证连接是否已按预期创建。
还要确认您是在发出信号的对象与其他实例之间创建连接,否则它将永远无法工作。