如何将信号连接到静态成员的非静态方法

时间:2018-04-26 07:31:06

标签: c++ qt

如果此成员不是QObject,是否可以以某种方式连接到静态成员的非静态方法?我知道使用lambda的解决方法,但我很好奇是否有另一种我不知道的方式。

class Value { // not a QObject!
  void setValue(int);
}

class Globals {
  static Value value; // is static member!
}

class Sender : public QObject {
signals:
  void valueChanged(int);
}

Sender *sender;
// the following does not work because Value is not a QObject
connect(sender, &Sender::valueChanged, &Globals::value, &Value::setValue);
// the following is a naive attempt, it is not a correct C++
connect(sender, &Sender::valueChanged, &Globals::value.setValue);
// this works but is ugly
connect(sender, &Sender::valueChanged, [](int val) { Globals::value.setValue(val); });
// is there another way???

0 个答案:

没有答案