http://www.qtcentre.org/threads/31700-QObject-sender()-in-a-Q_PRIVATE_SLOT
class MyClassPrivate
{
public:
...
void _q_mySlot()
{
Q_Q(MyClass); qDebug() << q->sender(); // should print "foo(0x.....)"
};
MyClass * const q_ptr;
Q_DECLARE_PUBLIC(MyClass);
};
class MyClass
{
Q_OBJECT
public:
MyClass(QObject *parent) : QObject(parent), d_ptr(new MyClassPrivate(this))
{
connect(foo, SIGNAL(bar()), this, SLOT(_q_mySlot()));
};
private:
Q_DECLARE_PRIVATE(MyClass);
Q_PRIVATE_SLOT(d_func(), void _q_mySlot());
MyClassPrivate * const d_ptr;
};
把槽函数实现在MyClassPrivate 类中,用做MyClass内部使用的槽。