qcustomplot实现非连续折线

#include "qtwidgetsapplication2.h"
#include <QPushButton>  
#include <QLineEdit>  
#include <QDateTime>  
#include <QSharedPointer> 

QtWidgetsApplication2::QtWidgetsApplication2(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);


    this->resize(1000, 600);

    QWidget* widget1 = new QWidget(this);
    widget1->setGeometry(QRect(QPoint(10,100), QSize(580, 50)));
    widget1->setVisible(true);


    double key;
    QDateTime dt(QDateTime::currentDateTime());
    int size = 24 * 60 / 5;
    double start = 20;
    double stop = 30;
    double space = 10.0 / size;
    customPlot = new QCustomPlot(this);

    customPlot->setGeometry(0,0, 800, 400);
    customPlot->setVisible(true);
    graph = customPlot->addGraph();
    //QCPAxisTickerDateTime时间坐标轴 必须要使用智能指针
    QSharedPointer<QCPAxisTickerDateTime> timeAxis(new QCPAxisTickerDateTime);

    //设置日期时间格式
    //timeAxis->setDateTimeFormat("yyyy-MM-dd hh:mm:ss");
    //timeAxis->setDateTimeFormat("dd-hh:mm");

    //设置轴的刻度对象
    customPlot->xAxis->setTicker(timeAxis);
    for (int i = 0; i < size; i++) 
    {
        key = dt.toTime_t();
        graph->addData(key, start + space * i);
        dt = dt.addSecs(5 * 60);
    }


    for (int i = 0; i < size; i++)
    {
        key = dt.toTime_t();
        graph->addData(key, qQNaN());
        dt = dt.addSecs(5 * 60);
    }
  


    for (int i = 0; i < size; i++) 
    {
        key = dt.toTime_t();
        graph->addData(key, stop - space * i);
        dt = dt.addSecs(5 * 60);
    }

    //设置可移动
    customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectLegend | QCP::iMultiSelect | QCP::iSelectPlottables);

    //x轴设置缩放比例,y轴缩放比例为1,则不进行缩放
    customPlot->axisRect()->setRangeZoomFactor(1.2, 1);

    customPlot->rescaleAxes(); // 重新调整轴的范围以显示所有数据点  
    //刷新
    customPlot->replot(QCustomPlot::rpQueuedReplot);
}

QtWidgetsApplication2::~QtWidgetsApplication2()
{}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值