Qtimer isActive()正在返回false,但它正在毁灭

时间:2014-03-31 16:57:38

标签: c++ qt qt5 qtimer

我正在尝试使用QTimer并且我开始很好,但是当我试图通过使用isActive检查其状态来阻止它时,它总是返回false但是定时器插槽内的代码正在以正确的间隔执行。

这是代码

void CurrentController::currentAction(void)
{
    count++;
    QTimer *timer = new QTimer(this);
    if(count == 1)
    {
        qDebug()<< "Count" << count;

        QObject::connect(timer, SIGNAL(timeout()), this, SLOT(callMethod()));
        timer->setInterval(10000);
        timer->start();
    }

停止计时器

    if(count >= 2)
    {
        qDebug()<< "Count2" <<timer->isActive();
        timer->stop();
        count = 0;
    }
}

帮助表示感谢...

1 个答案:

答案 0 :(得分:1)

这是一个局部变量,而不是d->timer

QTimer *timer = new QTimer(this); 

然而,在这里,您要检查某些d->timer是否有效:

qDebug()<< "Count2" << d->timer->isActive();

稍后你会引用timer,而不是d->timer

timer->stop();

也许你需要决定你想要使用哪个计时器,并坚持下去:)