每n秒更新一次QLineEdit值

时间:2012-11-18 19:56:46

标签: qt refresh qlineedit

一个初学者的问题,但实际上我被卡住了。我不允许使用“高级”c ++线程函数(也不是pthread,也不是QThread)。但是,我应该使用winAPI函数createThread创建一些线程。那些线程用来改变一些变量。我想在QLineEdit组件中每1秒显示一次这些变量。所以我尝试了一个代码:

    stillWorking = true;
    while(stillWorking){
        ui->editElement->setText(QString::number(getVariableValue()));
        qDebug() << 'running!!!'
        Sleep(1000);
    }

单击某个按钮时,stillWorking布尔值设置为false。这就是我希望停止这个循环的方式。但是,当我执行代码时,editElement没有更新,应用程序停止响应。但是,'running!!!'字符串每秒都会在调试部分中很好地打印出来。那么,有没有其他方法可以访问和显示我的变量?

1 个答案:

答案 0 :(得分:3)

您应该使用QTimer,假设您被允许(即使您被允许使用线程)。在UI线程上执行任何类型的阻塞都不起作用,需要将其发布以使事件处理起作用,并且对点击的响应需要事件处理。

Timers页面提供了更多信息以及如何使用它的示例。这里的想法是创建一个简单的插槽:

ui->editElement->setText(QString::number(getVariableValue()));

和连接到该插槽的重复计时器。

(这假设getVariableValue()已正确同步,并确实看到来自该其他线程的更新值。)