{
Q_OBJECT
public:
template<typename T>
void setSlot(T *recv, void (T::*f1)(), void (T::*f2)(), void (T::*f3)())
{
connect(this,&A::signal1,recv,f1);
connect(this,&A::signal2,recv,f2);
connect(this,&A::signal3,recv,f3);
}
signals:
void signal1();
void signal2();
void signal3();
};
{
Q_OBJECT
public:
public slots:
void slot1() {printf("slot1");}
void slot2() {printf("slot2");}
void slot3() {printf("slot3");}
};
int main()
{
A a;
B b;
a.setSlot(&b, &B::slot1, &B::slot2, &B::slot3);
a.signal1();
a.signal2();
a.signal3();
}
class A : public QObject
{
Q_OBJECT
public:
explicit A(QObject *parent = nullptr):QObject(parent){}
template<typename T>
void setSlot(T *recv, void (T::*f1)(), void (T::*f2)(), void (T::*f3)())
{
connect(this,&A::signal1,recv,f1);
connect(this,&A::signal2,recv,f2);
connect(this,&A::signal3,recv,f3);
}
signals:
void signal1();
void signal2();
void signal3();
};
class B : public QObject
{
Q_OBJECT
public:
explicit B(QObject *parent = nullptr):QObject(parent){}
public slots:
void slot1() {printf("slot1");}
void slot2() {printf("slot2");}
void slot3() {printf("slot3");}
};
int main()
{
A a;
B b;
a.setSlot(&b, &B::slot1, &B::slot2, &B::slot3);
a.signal1();
a.signal2();
a.signal3();
}
To copy to clipboard, switch view to plain text mode
Bookmarks