又一个Qt的bug吗?QTimer的lambda函数

用的越多,越有想法。

本想着用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的bug吗?QTimer的lambda函数)