QT 不使用 while 循环进行响应
QT does not respond using a while loop
我四处寻找,但没有运气,得到了这个问题的答案。
我正在进行UART通信,如果我按下按钮或处于"向下"位置,我想连续读取数据。问题是我正在使用 while 循环来做到这一点。当我尝试停止阅读并释放按钮时,程序冻结并且没有响应。任何帮助将不胜感激。部分代码如下。
void MainWindow::on_pushButton_3_toggled(bool checked)
{
while(checked)
{
QByteArray datas = Serial_port.readAll();
ui->textEdit->setText((QString)datas);
qDebug()<<"Im here";
msleep(100);
qDebug()<<datas;
qDebug()<<checked;
}
qDebug()<<checked;
}
你阻塞了事件循环,因此Qt无法处理事件。您可以尝试在循环期间调用QApplication::processEvents()
,这应该会使 UI 再次响应。
为什么需要一个循环来执行这段代码? 您是否使用函数 connect() 来使您的点击事件正确? 你点击你开始你的循环,你没有这个循环的结束,你不需要这个循环,你从串行端口读取全部并将其放入 QBytearray 当它最终读取所有函数时读取下一行和下一行直到函数结束!
但是,如果您需要继续使用循环,请尝试在UI中选中一个复选框,以获取true或false,并在循环中放入if以停止循环
if(ui->cb->isChecked())
checked = true;
else
checked=false;
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 为什么我的for循环不能正确获取argv
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- while循环中while循环的时间复杂度是多少
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- while 循环对非整数的响应很奇怪
- QT 不使用 while 循环进行响应
- 在 y/n 响应后保存 while 循环信息
- 第二个无效响应在我的验证循环中被接受
- getch()未响应停止循环
- c++的do while循环没有响应