C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 从工作线程更新QtCharts的正确方法?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
因为这是我的第一个问题,我想说StackOverflow帮了我无数次.谢谢.

现在我的问题.我目前正在尝试在Qt 5.8中实现一个简单的数据采集应用程序.该应用程序必须与DSP通信并以100Hz至10kHz的速率获取一些电压.由于我需要对获得的电压做一些额外的计算,我认为在与GUI线程不同的线程中进行数据采集和操作是个好主意.

数据采集​​和附加计算在单独的线程中工作得很好.我的问题是,使用QtCharts异步显示工作线程结果的正确方法是什么?

任何建议都将深表感谢.

最好的祝福,

T.Krastev

解决方法

有类似的问题.
我有一个线程将数据加载到Model.在finshed之后我让线程发出信号DataLoadingDone.这通过Qt :: QueuedConnection连接到MainWindow中的一个插槽,因此它从GuiThread进行评估.否则我遇到QBarSet插槽抛出异常的问题.

@H_976_23@mainWindow::MainWindow() { this->chart = new QChart(); this->chartView = new QChartView(chart); this->series = new QBarSeries(); this->mapper = new QHBarmodelmapper(this); this->connect(this->myThread,SIGNAL(DataLoadingDone()),this,SLOT(myThread_DataLoadingDone()),Qt::QueuedConnection); this->setWidget(this->chartView); } void MainWindow::myThread_DataLoadingDone() { mapper->setFirstBarSetRow(0); mapper->setLastBarSetRow(0); mapper->setFirstcolumn(0); mapper->setcolumnCount(this->model->columnCount()); mapper->setSeries(series); mapper->setModel(this->model); //only add at the first time //if we add this every time something goes wrong and // multiple bars are displayed behind each other if (this->chart->series().count() == 0) { this->chart->addSeries(series); this->chart->createDefaultAxes(); } }

大佬总结

以上是大佬教程为你收集整理的c – 从工作线程更新QtCharts的正确方法?全部内容,希望文章能够帮你解决c – 从工作线程更新QtCharts的正确方法?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。