本文以vs2010+qt 编程,安装qwt插件,设计界面如图所示,以正弦信号模拟传感器接收的数据,运行效果如下所示.
由于力传感器相关软件信号采集只能在ubuntu的Clion下,所以需要将相关文件复制拷贝到其项目中,需要的文件有:
其中moc_xx.cpp改成moc_xx.h, 将其在mywidget.cpp中引用,因为qt编译是用Qmake,而Clion是用Cmake, 如果没加会出现以下错误:
Q_OBJECT未定义,若将Q_OBJECT删掉,则QT基本的信号和槽功能不能实现:
所以必须加上上述文件moc_xx.h,
设计步骤:
- 参考我的基于vs2010+qt计算器设计界面,添加qwtplot控件,添加开始和结束按钮,分别命好名qwtPlot_X qwtPlot_Y qwtPlot_Z qwtPlot_RX qwtPlot_RY qwtPlot_RZ
- 添加click响应和自定义槽函数start()和finish()
运行即可出现界面
3.重新定义QWTPLOT属性
定义模拟信号的函数Getdata 和更新qwtplot_x的函数,其中updatadataSlot_X()是实时显示动态曲线的关键
在start()里添加connect(),连接信号和槽
此时运行可出现第一张图像
动态显示正弦曲线的相关代码
mywidget.h如下:
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QtWidgets/QWidget>
#include "ui_mywidget.h"
#include <QTimer>
#include <QTime>
#include <qwt_plot.h>
#include <qwt_plot_curve.h>
#include <qwt_legend.h>
#include <math.h>
#include <qwt_plot_zoomer.h>
#include <qwt_plot_panner.h>
#include <qwt_plot_magnifier.h>
#include <qwt_plot_grid.h>
#include <qwt_scale_draw.h>
class mywidget : public QWidget
{
Q_OBJECT
public:
mywidget(QWidget *parent = 0);
~mywidget();
public:
void setupqwt_X(QwtPlot* qwtplot); //设置QWTPLOT的属性
void setupqwt_Y(QwtPlot* qwtplot);
void setupqwt_Z(QwtPlot* qwtplot);
void setupqwt_RX(QwtPlot* qwtplot);
void setupqwt_RY(QwtPlot* qwtplot);
void setupqwt_RZ(QwtPlot* qwtplot);
public:
QVector<double> t_data;
QVector<double> X_data;
QVector<double> Y_data;
QVector<double> Z_data;
QVector<double> RX_data;
QVector<double> RY_data;
QVector<double> RZ_data;
QTimer updateTimer;
QwtPlotCurve *curve_X ;
QwtPlotCurve *curve_Y ;
QwtPlotCurve *curve_Z ;
QwtPlotCurve *curve_RX ;
QwtPlotCurve *curve_RY ;
QwtPlotCurve *curve_RZ ;
double getData_X(double );
double getData_Y(double );
double getData_Z(double );
double getData_RX(double );
double getData_RY(double );
double getData_RZ(double );
public slots:
void updatedataSlot_X();
void updatedataSlot_Y();
void updatedataSlot_Z();
void updatedataSlot_RX();
void updatedataSlot_RY();
void updatedataSlot_RZ();
void start();
void finish();
private:
Ui::mywidgetClass ui;
};
#end