从传感器实时获取的数据,从串口上传到上位机,上位机由QT开发,上位机如何通过实时动态曲线方式进行展示呢?网上主要有两种方式:1、使用qwt;2、QCustomPlot;两者都差不多,QCustomPlot貌似更灵活漂亮点,但是由于qwt还有其他控件,这次的选择是qwt。
/*************************************** 转载请注明出处:tedeum.iteye.com ****************************************/
一、首先要定义和实例化一个QwtPlot,然后是一根曲线QwtPlotCurve,还有就是数据,由于QwtPlot是从设计器拉到界面,IDE做了这个工作就暂时不管了,如果没有IDE可以用代码写的:
//曲线 QwtPlotCurve * curve; //X轴 double time[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //Y轴 double val[10] = {3, 5, 8, 7, 2, 0, 7, 9, 1};
二、接下来就是把这些东西组装起来:
//实例化 curve = new QwtPlotCurve("Acc_X"); //加载数据 curve->setSamples(time, val, 10); //加到plot,plot由IDE创建 curve->attach(ui->qwtPlot);
话不多说,一切尽在注释中,运行可以看见曲线绘制出来了:
图表显示出来,现在的问题是这是一个静态图标,如何动态显示实时数据呢,我们用定时器模拟产生随机数进行动态数据的展示,如下:
//启动定时器,1秒响应,用于模拟产生实时数据 this->startTimer(1000); //定时器事件 void MainWindow::timerEvent( QTimerEvent * ) { //所有数据前移移位,首位被覆盖 for (int i = 0; i < 9; i++) { val[i] = val[i+1]; } //最后一位为新数据(这里为随机数模拟) val[9] = qrand()%10; //重新加载数据 curve->setSamples(time, val, 10); //QwtPlot重绘,重要,没有这句不起作用 ui->qwtPlot->replot(); }
好了,到此为止可以动态显示实时曲线了:
最后,还有一个问题当多条曲线共同显示的时候,如何隐藏显示曲线呢,比如加速度传感器的x、y、z共同显示,我只想看一条。可以通过点击图例在做到,好了还是看代码和注释:
//实例化图例 QwtLegend *legend = new QwtLegend; //图例可以选择,Checkable legend->setDefaultItemMode( QwtLegendData::Checkable ); //pwtPlot中插入图例 ui->qwtPlot->insertLegend(legend, QwtPlot::LeftLegend ); //连接槽,处理选择事件 connect( legend, SIGNAL( checked( const QVariant &, bool, int ) ), SLOT( legendChecked( const QVariant &, bool ) ) ); //图例选择事件 void MainWindow::legendChecked( const QVariant &itemInfo, bool on ) { //获取曲线 QwtPlotItem *plotItem = ui->qwtPlot->infoToItem( itemInfo ); //根据图例选择状态,设置曲线隐藏还是显示 if ( plotItem ) plotItem->setVisible(on); //重要,下面这句没有不起作用 ui->qwtPlot->replot(); }
好了,简单吧。qwt实时曲线显示的关键技术细节都在这里了:
/*************************************** 转载请注明出处:tedeum.iteye.com ****************************************/
相关推荐
在"QT通过qwt实现曲线动态显示"这个项目中,开发者利用Qwt库的功能来实现在GUI窗口中动态展示和更新曲线。Qwt库提供了丰富的图形对象,如曲线、图表、标尺、图例等,使得开发者可以轻松构建出专业级别的数据可视化...
在“qwt动态显示曲线例子”中,我们将探讨如何利用Qwt库来实现在界面上动态地展示曲线数据,以及如何控制曲线的显示与隐藏。 首先,了解Qwt库的基本结构和组件是至关重要的。Qwt库提供了多种图形类,如QwtPlot、...
该demo实现了简单的温湿度实时动态曲线的绘制,使用qwt-6.1.3中的QwtPlot实现,非常轻松就能够实现绘图的功能。
在本项目中,“QWT显示动态变化折线图”是指利用QWT库来创建一个可以实时更新数据的折线图,这对于监控实时数据流或者在工程和科学应用中展示动态变化趋势非常有用。VS2010是Visual Studio 2010的简称,是一个流行的...
本篇文章将详细介绍如何在Qt 5.5.1中利用Qwt 6.1.2实现动态、实时的二维曲线绘制,以及如何实现坐标轴缩放和曲线缩放功能。 首先,你需要安装Qwt库。通常,你可以从Qwt官网下载源代码,然后在Qt环境中配置编译。...
在本文中,我们将深入探讨如何使用Qt库中的QWT模块来绘制动态曲线,这对于实时数据监测和可视化至关重要。QWT是一个强大的开源库,为Qt应用程序提供了丰富的科学绘图功能,包括2D图表、曲线图、标尺、刻度以及各种...
总之,"qwt画实时曲线的小demo"是一个很好的起点,帮助初学者了解如何使用Qwt库在Qt环境中实现动态图形。通过深入研究这个示例并逐步扩展功能,你可以掌握Qwt的强大功能,从而在各种科学和工程应用中创建出美观且...
总结起来,通过Qt结合Qwt库,我们可以构建一个能够实时显示动态曲线的应用,其中横轴随着时间推移而移动,有效地展示了数据的实时变化。这在科学研究、工程监控、数据分析等领域都有广泛的应用。通过熟练掌握Qwt库,...
QT实时动态曲线Demo是一个基于Qt库开发的应用程序示例,主要展示了如何在Qt环境中实现图形用户界面(GUI)上的实时数据可视化,特别是动态绘制曲线。Qt是一个跨平台的C++图形用户界面应用程序开发框架,广泛应用于...
在实时曲线绘制中,时间轴通常需要动态更新,以反映数据的最新时间戳。这个类可能会覆盖QwtPlotSeriesItem的一些方法,如drawSeries(),以便在画布上精确地绘制时间相关的数据点。 "dateTime.pro"是项目的构建文件...
3. **实时更新**:QWT支持实时数据更新,这对于监测和分析动态变化的数据流非常有用,比如在工程监控或数据分析应用中。 4. **自定义轴**:用户可以定制坐标轴的范围、刻度和标签,甚至可以设置轴的旋转角度,以...
在IT行业中,尤其是在嵌入式系统、数据可视化或者科学计算领域,实时动态曲线的显示是一项重要的功能。Qwt是一个开源的C++库,专门用于创建类似Qt应用中的工程图形,如图表、仪表盘等,尤其适合实时数据的展示。本...
【Qt开源动态坐标带时间标的非qwt实时曲线】是一个专为Qt开发的高效、灵活的曲线绘制类库,主要用于在图形用户界面中显示实时更新的曲线数据。它摒弃了传统的qwt库,提供了全新的解决方案,使得开发者可以更加便捷地...
在本文中,我们将深入探讨如何使用Qt库中的QWT模块来绘制动态曲线,这对于实时数据监测和可视化至关重要。QWT是一个强大的开源库,为Qt应用程序提供了丰富的科学绘图功能,包括2D图表、曲线图、标尺、刻度以及各种...
Qwt则是一个与Qt兼容的库,专门用于绘制2D图形,包括曲线图、图表和仪表盘等。本教程将深入探讨如何在Qt项目中使用Qwt库来绘制曲线图。 首先,让我们了解Qwt。Qwt(Qt Widget Toolkit)是一个轻量级的库,它扩展了...
在本文中,我们将深入探讨如何使用Qt库中的QWT模块来绘制动态曲线,这对于实时数据监测和可视化至关重要。QWT是一个强大的开源库,为Qt应用程序提供了丰富的科学绘图功能,包括2D图表、曲线图、标尺、刻度以及各种...
开发者可以通过设置`QwtPlotCurve`的属性,如颜色、线型、标记等来定制曲线的外观,并通过更新数据模型来动态改变曲线的形状。 为了实现波形的绘制,开发者通常会将时间序列数据映射到`QwtPlotCurve`,设置X轴为...
4. **交互性**:除了静态显示,Qwt还支持用户交互,如鼠标点击、拖动缩放、平移等操作,使得数据可视化更加动态和直观。 5. **多种图形类型**:除了曲线图,Qwt还包括饼图、条形图、仪表盘等多种图形,满足不同场景...
QWT的设计理念是保持轻量级,因此它的性能很高,适用于实时数据的动态显示。 对于"QT绘制串口数据曲线图",我们需要完成以下步骤: 1. **设置串口通信**:使用QT的QSerialPort模块来建立与硬件设备的串口连接。这...
总的来说,结合Qt和Qwt库,你可以创建出功能丰富的曲线图,不仅能够显示多条颜色不同的曲线,还支持用户交互的缩放和滚动。通过动态添加工具栏,可以进一步提升用户体验,使其能方便地控制和查看数据。在实际项目中...