繁体   English   中英

如果QTimer不停止会发生什么

[英]What happen if QTimer doesn't stop

我有一个问题:如果启动QTimer但不停止它,内存或其他事情会如何发生。

这是我的代码:文件啊

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();
}

文件Main.cpp

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

谢谢

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

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

如果使用Qt进行编程,则将避免像(1)那样发生无限循环,这将不起作用,因为它将阻塞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;
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM