【发布时间】:2012-11-18 19:56:45
【问题描述】:
一个初学者的问题,但实际上我被卡住了。我不允许使用“高级”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!!!' 字符串每秒都很好地打印在调试部分。那么,还有其他方法可以访问和显示我的变量吗?
【问题讨论】:
-
为什么不能使用QThread?不使用它有什么好处,如果你使用 QLineEdit,你已经对 Qt 产生了依赖。
-
因为它是项目的一部分。所有线程都应该使用 WinAPI 线程函数(信号量、互斥量、...等...)来完成。