如果QTimer没有停止会发生什么

时间:2017-06-08 04:27:53

标签: c++ qt qt5 qtimer

我有一个问题:如果我开始使用QTimer而不是停止它,那么内存或其他事情会怎么样。

这是我的代码: 文件a.h

void updateProgressBar()

档案a.cpp

void updateProgressBar(){
timer= new QTimer(this);
timer->setInterval(1000);
timer->setSingleShot(false);
connect(timer,SIGNAL(timeout()),
        myMainUi,
        SLOT(setProgressBar()));
timer->start();
}

File Main.cpp

int main(){
     while(1){
        updateProgressBar();
    }
return 1;
}

谢谢

1 个答案:

答案 0 :(得分:2)

从Qt内部事件循环中触发QTimer。

您的代码将创建无限数量的QTimer并最终崩溃。

如果你使用Qt进行编程,你将避免使用无限循环,因为它将阻止Qt事件循环。

鉴于您似乎有一个UI,您的代码应该在一个类中,在这种情况下,将类定义中的QTimer声明为私有成员而不是指针更有意义,然后将其初始化构造函数。

class MyClass: public QObject
{
    Q_OBJECT

public:
    void startUpdateProgressBar() { 
        myTimer.singleShot(false);
        myTimer.start(1000);
    }

    void stopUpdateProgressBar() { 
        myTimer.stop();
    }

  private:
        QTimer myTimer;
};