34
35
* Necessary helper class because a QObject class cannot be a template
36
class GWENVIEWLIB_EXPORT BinderInternal : public QObject {
37
class GWENVIEWLIB_EXPORT BinderInternal : public QObject
39
explicit BinderInternal(QObject* parent);
41
explicit BinderInternal(QObject* parent);
43
virtual void callMethod() {}
45
virtual void callMethod() {}
79
81
class BaseBinder : public BinderInternal
82
typedef void (Receiver::*Method)(MethodArg);
83
static void bind(QObject* emitter, const char* signal, Receiver* receiver, Method method, MethodArg arg) {
84
BaseBinder<Receiver, Arg, MethodArg>* binder = new BaseBinder<Receiver, Arg, MethodArg>(emitter);
85
binder->mReceiver = receiver;
86
binder->mMethod = method;
88
QObject::connect(emitter, signal, binder, SLOT(callMethod()));
89
QObject::connect(receiver, SIGNAL(destroyed(QObject*)), binder, SLOT(deleteLater()));
84
typedef void (Receiver::*Method)(MethodArg);
85
static void bind(QObject* emitter, const char* signal, Receiver* receiver, Method method, MethodArg arg) {
86
BaseBinder<Receiver, Arg, MethodArg>* binder = new BaseBinder<Receiver, Arg, MethodArg>(emitter);
87
binder->mReceiver = receiver;
88
binder->mMethod = method;
90
QObject::connect(emitter, signal, binder, SLOT(callMethod()));
91
QObject::connect(receiver, SIGNAL(destroyed(QObject*)), binder, SLOT(deleteLater()));
94
(mReceiver->*mMethod)(mArg);
96
(mReceiver->*mMethod)(mArg);
98
BaseBinder(QObject* emitter)
99
: BinderInternal(emitter)
100
BaseBinder(QObject* emitter)
101
: BinderInternal(emitter)
107
109
template <class Receiver, class Arg>