QT没有使用while循环响应

时间:2017-01-12 19:43:37

标签: c++ qt 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;

}

2 个答案:

答案 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再次响应。