void onbtnclick() {
static MyDlg*dlg= nullptr;
if (dlg == nullptr) {
dlg = new MyDlg(this);
}
connect(dlg , &MyDlg::mysignal, this, [=](){
qDebug() << "run here";
});
}
一开始,代码如上写的,发现,随着onbtnclick调用次数的增多,lambda函数也总是调用多次,没想通为什么,后来恍然大悟:每次调用onbtnclick都会导致connect生成一个新的lambda函数,因此connect应该放在创建的时候:
void onbtnclick() {
static MyDlg*dlg= nullptr;
if (dlg == nullptr) {
dlg = new MyDlg(this);
connect(dlg , &MyDlg::mysignal, this, [=](){
qDebug() << "run here";
});
}
}