1. 程式人生 > >Qt使用connect函式時向slot傳遞引數:使用lambda表示式

Qt使用connect函式時向slot傳遞引數:使用lambda表示式

QMetaObject::Connection QObject::connect(const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type = Qt::AutoConnection)

相對於最常用的connect版本,第二個引數被替換為指向類成員函式的指標,第四個引數被替換為functor,我們可以向它傳遞一個lambda表示式(這需要你的編譯器支援C++11標準),實現方法如下:

connect(ui->button1, &QPushButton::clicked, this, [=
](){printMsg(1);}); connect(ui->button2, &QPushButton::clicked, this, [=](){printMsg(2);}); connect(ui->button3, &QPushButton::clicked, this, [=](){printMsg(3);});

我覺得這種做法其實還是相當於實現了多個slot,但是lambda表示式讓它變得很簡潔。