用的越多,越有想法。
本想着用lambda简化一下代码,结果出了问题,跟踪调试了一下,发现怀疑是Qt的。
代码如下。
void MainWindow::on_pushButton_clicked()
{
int max = 0;
connect(&m_dTimer, &QTimer::timeout, this, [=]()mutable{
qDebug() << "fffffff" << max;
max++;
if(max >= m_max)
{
m_dTimer.stop();
// m_dTimer.disconnect();
}
}, Qt::UniqueConnection);
m_dTimer.start(500);
}
很简单,可是也很怪异的是Qt::UniqueConnection这个参数竟然不起作用了。
点击多次按钮,就可以看出来问题。只加入一个disconnect来结束。
Qt定时器与Lambda表达式
探讨使用Qt的QTimer与Lambda表达式结合时遇到的问题,特别是在Qt::UniqueConnection参数失效的情况下,如何避免多次点击按钮导致的资源浪费。通过加入disconnect解决重复连接问题。
889





