Как подключить сигналы к слотам между двумя общими библиотеками - PullRequest
1 голос
/ 21 мая 2019

У меня есть 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 Ответ

2 голосов
/ 21 мая 2019

Ваш код кажется правильным, хотя вы должны попробовать эти вещи, чтобы быть уверенным.

QObject::connect вернуть QMetaObject :: Connection , который может привести к bool, чтобы вы могли проверитьво время выполнения, если соединение было создано, как ожидалось.

Также убедитесь, что вы создаете соединение между объектом, который излучает сигнал, а не другим экземпляром, иначе оно никогда не будет работать.

...