例如:
void MainWidget::testThreadTask()
{
qDebug() << "On test task";
}
void MainWidget::onBtnClick()
{
QThread *thread = new QThread;
connect(thread, QThread::started, this, testThreadTask);
thread->start();
qDebug() << "Thread START, now we wait 5s";
QElapsedTimer timer;
timer.start();
while (timer.elapsed() < 5000)
{
}
qDebug() << "END";
}
程序输出为:
START wait 5s END On test task
我想在按下按钮后创建一个任务来处理一些事情,然后函数将等待任务完成后再返回。
事实上,可能不需要创建一个新任务并等待它执行,因为既然你必须等待并陷入其中,为什么不直接在函数中运行它呢。
但当我处理QT串行数据时,这实际上是一个问题。我想在按下按钮后将数据发送到串行端口,然后等待数据(通过不断读取),但我发现,当我一直等待时,串行端口根本无法读取数据,只有当我退出该功能时串行端口才能读取数据。
有没有办法处理串行数据发送和接收同步?
void MainWidget::onBtnClick()
{
serial->write("Test");
if (serial->bytesAvailable())
{
QByteArray data = serialIo->readAll();
// handle the data
}
}