如果此成员不是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???