我没有运气就四处寻找这个问题的答案。
我正在进行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;
}
答案 0 :(得分:0)
为什么你需要一个循环来执行这段代码?你使用函数connect()来使你的点击事件正确吗?当你点击你开始你的循环并且你没有结束这个循环,你不需要这个循环,你从串口读取并将它放在QBytearray当它最终读取所有函数时读取下一个线和下一个直到功能结束!
但是如果你需要继续使用循环尝试在你的ui中创建一个复选框,要获得true或false并将一个if in in循环来阻止你的循环
if(ui->cb->isChecked())
checked = true;
else
checked=false;
答案 1 :(得分:0)
您正在阻止事件循环,因此,Qt无法处理事件。您可以尝试在循环期间调用QApplication::processEvents()
,这样可以让UI再次响应。