我在Qt Widget项目中制作一些东西,用C ++编写。由于我需要做什么,我需要无限循环,在完成我的研究后,我意识到对象事件中的无限循环不起作用,相反,我需要使用一些线程..
这是我的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);
}
编辑:对此解决方案的一个简单修复是在循环的每次迭代之后使用QCoreApplication::processEvents()
函数,因为这允许窗口小部件应用程序处理必要的事件。这是一个快速修复,但使用QTimer库是一种更好的解决方法。
答案 0 :(得分:2)
正如你自己建议的那样,在一个单独的线程中执行你的处理将是一个选择,我肯定会考虑这样做。我不认为你展示的QTimer会有所帮助。
然而,快速解决方法是在每个循环结束时手动调用QCoreApplication::processEvents()
。这将确保Qt处理所有待处理事件,从而保持您的UI响应。
答案 1 :(得分:-1)
您的计时器无法正常工作,因为它只存在于构造函数中。您应该将头文件中的构造函数声明为私有,例如。