Qt Widget项目中的无限循环

时间:2012-03-18 14:09:15

标签: c++ qt widget

我在Qt Widget项目中制作一些东西,用C ++编写。由于我需要做什么,我需要无限循环,在完成我的研究后,我意识到对象事件中的无限循环不起作用,相反,我需要使用一些线程..

  1. 我决定使用QTimer,但我正在考虑使用QThread。我应该使用哪一个?
  2. 这是我的QTimer代码,似乎不起作用:

    Clock_Application::Clock_Application(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::Clock_Application)
    {
        ui->setupUi(this);
        QTimer *timer_Stopwatch = new QTimer(this);
        connect(timer_Stopwatch, SIGNAL(timeout()), this, SLOT(timer_Start()));
        timer_Stopwatch->start(1000);
    }
    
  3. 编辑:对此解决方案的一个简单修复是在循环的每次迭代之后使用QCoreApplication::processEvents()函数,因为这允许窗口小部件应用程序处理必要的事件。这是一个快速修复,但使用QTimer库是一种更好的解决方法。

2 个答案:

答案 0 :(得分:2)

正如你自己建议的那样,在一个单独的线程中执行你的处理将是一个选择,我肯定会考虑这样做。我不认为你展示的QTimer会有所帮助。

然而,快速解决方法是在每个循环结束时手动调用QCoreApplication::processEvents()。这将确保Qt处理所有待处理事件,从而保持您的UI响应。

答案 1 :(得分:-1)

您的计时器无法正常工作,因为它只存在于构造函数中。您应该将头文件中的构造函数声明为私有,例如。