connect函数与lambda表达式的一点问题

尽量不要使用connect函数连接一个lambda表达式,因为lambda每次都会被分配一个新的地址(函数指针),会导致一个信号连接到多个重复的相同的lambda表达式,会导致弹出多个窗口,并多次进行重复操作。

不要使用这种写法:

    connect(getTreeView(),&CustomTreeView::deleteStationSignal,this,[&](const QString& StationName){

        //直接对选中内容进行删除
        solution->deleteStation(StationName);

        //删除相应文件夹
        if(!deleteDirName(solution->getSolutionName()+"/"+StationName)){
            QMessageBox::critical(nullptr,tr("Error"),tr("Delete staition error."));
            return;
        }

        createTreeView();
        //写入文件
        QJsonDocument tmp=dataStructToJsonDocument();
        saveJsonFile(tmp);

    });

 

posted @ 2024-05-14 15:16  BlackSnow  阅读(213)  评论(0)    收藏  举报