问题
在使用定义的服务时, 使用Lamada表达式传值没有传过去
解决
把变量写到.h 的头文件里,就可以传过去。没问题
虽然问题已经解决,但是不知道原因(写到.h文件和写到.cpp文件有何区别;欢迎下方评论疑难答惑)
显示到textEdit
预期效果
实际效果
只显示队列的最后一个,但控制台显示的是正常的,更新数据的时候没有在次渲染
1 添加repaint(),进行渲染,数据虽然是一个个显示,但显示速度太快。导致录屏的时候还是只显示最后一个
2 由于显示的太快,加一个sleep()方法让它执行时“睡”一会在执行,可以实现预期效果,但是在进行别的操作是程序会无响应
sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。
思考
使用for循环每0.3秒请求一下数据,把数据一次性全部请求了,在过0.3秒请求时队列就没数据了所以出现了错误
最终代码
Service:
Service::Service()
{
srand( static_cast<unsigned int>(time(nullptr)));
int n=50;
for(int i=0; i<n; i++)
{
queue.enqueue(qrand()%100);
}
}
QQueue<int> Service::getQueue() {
return queue;
}
.cpp文件:
Service *service = new Service();
queue = service->getQueue();
// 0.3秒显示一个数
connect(Timer, &QTimer::timeout,
[=]()
{
if(!queue.empty())
{
QString string = QString::number(queue.dequeue());
ui->textEdit->setText(string);
repaint();
}
}
);
效果:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。