Qt使用connect函式時向slot傳遞引數:使用lambda表示式
阿新 • • 發佈:2019-01-06
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表示式讓它變得很簡潔。