QT主线程与子线程通信处理QWT绘制曲线(动态,可重复绘制多张)

本文档展示了如何在QT应用中使用线程(CSplineThread)处理QWT库来动态绘制曲线。线程负责生成数据,并通过信号更新坐标轴和发送数据。主线程上的CSyncSplineDlg类接收信号,更新坐标轴标题和曲线数据,从而实现实时刷新的动态曲线图表。QwtPlot类用于创建和管理图表,QwtLegend用于显示可选的曲线。
摘要由CSDN通过智能技术生成

CSyncSplinePlot.h

#include "qtheader_file.h"

//用来重绘X轴坐标

class TimeScaleDraw: public QwtScaleDraw
{
public:  
    TimeScaleDraw(const QStringList &labels ):  
        d_labels( labels )  
    {  
        // 设置坐标轴刻度线的长度
        setTickLength( QwtScaleDiv::MinorTick, 0 );  
        setTickLength( QwtScaleDiv::MediumTick, 0 );  
        setTickLength( QwtScaleDiv::MajorTick, 10 );  


        //不显示刻度线坐落的部件
        enableComponent( QwtScaleDraw::Backbone, false );  
        //标签显示的样式
        setLabelAlignment( Qt::AlignLeft  | Qt::AlignVCenter);  
    }  
    //刻度标签值  
    virtual QwtText label( double value) const  
    {  
        QwtText lbl;  


        const int index = qRound( value );//四舍五入  
        if ( index >= 0 && index < d_labels.size() )  
        {  
            lbl = d_labels[ index ];  
        }  
        return lbl;  
    }  


private:  
    //刻度标签
    const QStringList d_labels; 

};


class CSyncSplinePlot : public QwtPlot
{
    Q_OBJECT


public:
    CSyncSplinePlot(QWidget *parent);
    ~CSyncSplinePlot();
  //显示曲线
    void showCurve( QwtPlotItem *, bool on );


public Q_SLOTS:

//标签选择槽函数

        void legendChecked( const QVariant &, bool on );
 

};

CSyncSplinePlot.cpp

#include "csyncsplineplot.h"

CSyncSplinePlot::CSyncSplinePlot(QWidget *parent)
    : QwtPlot(parent)
{
    setAutoReplot( false );
    setCanvasBackground(Qt::white);

    plotLayout()->setAlignCanvasToScales( true );
    //设置标题,可选择,放置在右边
    QwtLegend *legend = new QwtLegend;
    legend->setDefaultItemMode( QwtLegendData::Checkable );
    insertLegend( legend, QwtPlot::RightLegend );
    //X轴坐标名称 
    setAxisTitle( QwtPlot::xBottom, " System Uptime [h:m:s]" );

    //X轴坐标间隔
    setAxisScale( QwtPlot::xBottom, 0, 10, 1 );
    setAxisLabelAlignment( QwtPlot::xBottom, Qt::AlignLeft | Qt::AlignBottom );

    //设置Y轴
    setAxisTitle( QwtPlot::yLeft, "Cpu Usage [%]" );
    setAxisScale( QwtPlot::yLeft, 0, 100 );
    setMinimumHeight( 500 );
    setMinimumWidth( 600 );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值