如何将信号连接到 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 的信号连接到来自 QWidgetWidgetClass 的插槽。

WidgetClass::WidgetClass()
  : __core(new CoreClass)
{
  connect(__core, &CoreClass::aSignal, this, qOverload<>(&QWidget::update));
}

我希望在 __core 发出信号 aSignal 时更新 widget,但它没有。

====================更新=================== ======

那是我的错。连接没有问题。我只是错过了调用函数,它调用了 connect 函数。

您的代码似乎是正确的,不过您应该尝试这些操作以确保安全。

QObject::connect return 可以转换为 boolQMetaObject::Connection,因此您可以在运行时验证连接是否已按预期创建。

还要确认您是在发出信号的对象与其他实例之间创建连接,否则它将永远无法工作。