QTimer与Lambada在类的成员函数中执行下面这一行代码会有隐藏问题:
QTimer::singleShot(1000, [&](){ dosomething();});
这里有一个隐患,dosomething();调用者为this,如果在1000ms之内碰巧this被销毁了,那么1000ms之后,这个Lambada依然会被执行,此时有可能导致crash或其他为知结果,正确的写法为:
QTimer::singleShot(1000, this, [&](){ dosomething();});
这样当this被销毁时,该Lambada表达式将不会被执行,也就不会crash了。