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;
};
{
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 );