如何将信号连接到2个共享库之间的插槽

时间:2019-05-21 12:21:16

标签: c++ qt signals-slots

我有2个共享库。我是第一个为特定类实现一些核心组件的人。

class CoreClass : public QObject
{

  Q_OBJECT

public:
  void doSomeStuff();

signals:
  void aSignal();
}

在第二个中,我为该类实现了一些特定于小部件的选项:

class WidgetClass : public QWidget
{

  Q_OBECJT

public:
  WidgetClass();

private:
  CoreClass* __core;
}

现在,我想将CoreClass的信号连接到WidgetClass派生的QWidget的插槽。

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

我希望每当widget发出信号__core时更新aSignal,但不会。

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

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

1 个答案:

答案 0 :(得分:2)

您的代码似乎正确,但是您应该尝试执行以下操作以确保操作

QObject::connect返回一个可以强制转换为bool的{​​{3}},因此您可以在运行时验证是否已按预期创建了连接。

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