首页 > 其他分享 >QWT--自定义坐标轴刻度值

QWT--自定义坐标轴刻度值

时间:2023-04-07 15:35:45浏览次数:43  
标签:自定义 -- xBottom 坐标轴 TimeScaleDraw 刻度 QwtPlot QWT Qwt1

一、效果展示

定义xBottom为带单位的刻度值

 

 定义xBottom为分钟:秒数的刻度值

 

 

二、具体步骤

2.1、自定义坐标轴

自定义坐标轴刻度,需要继承自QwtScaleDraw,然后重写如下虚函数

virtual QwtText label(double v) const;

定义一个规则,然后设置坐标轴范围时,按定义的规则传入即可。

例如,定义mm:ss刻度值:

#ifndef TIMESCALEDRAW_H
#define TIMESCALEDRAW_H

#include <QWT/qwt_scale_draw.h>
#include <QDateTime>

class TimeScaleDraw : public QwtScaleDraw
{
public:
    TimeScaleDraw();

    virtual QwtText label(double v) const;
};

#endif // TIMESCALEDRAW_H
#include "timescaledraw.h"

TimeScaleDraw::TimeScaleDraw()
{

}

QwtText TimeScaleDraw::label(double v) const
{
    QDateTime dt;
    dt.setTime_t((int)v);
    return dt.toString("mm:ss");
}

传入的值是v,但是返回的是一个字符串,这个字符串是实际显示在坐标轴上的刻度值,如果需要刻度值带单位,则可以这样写:

QwtText TimeScaleDraw::label(double v) const
{
    QString ret = "";
    ret = QString::number(v)+"mA";
    if(ret.isEmpty())
        return;
    else
        return ret;
}

2.2、使用自定义坐标轴

QWT_Area = new QWidget;
QWT_Area->resize(this->width(),this->height());

m_Qwt1 = new QwtPlot(QWT_Area);
m_Qwt1->resize(this->width(),this->height());
m_Qwt1->setAxisScale(QwtPlot::xBottom,0,10);
m_Qwt1->setAxisScale(QwtPlot::yLeft,0,10);
m_Qwt1->enableAxis(QwtPlot::xBottom,true);
m_Qwt1->enableAxis(QwtPlot::xTop,false);
m_Qwt1->enableAxis(QwtPlot::yLeft,true);
m_Qwt1->enableAxis(QwtPlot::yRight,false);


m_Qwt1->setAxisScaleDraw(QwtPlot::xBottom,new TimeScaleDraw());
m_Qwt1->setAxisScale(QwtPlot::xBottom, QDateTime::currentDateTime().toTime_t() - 100,QDateTime::currentDateTime().toTime_t()); //标尺范围

QWT_Area->show();

 

标签:自定义,--,xBottom,坐标轴,TimeScaleDraw,刻度,QwtPlot,QWT,Qwt1
From: https://www.cnblogs.com/vickylinj/p/17296300.html

相关文章

  • 酒店智能化升级 华为x携住开启酒店行业变革新方向
    随着信息技术的进步,酒店的智能化已经发展了近十年。但是,在发展的初期,都是一些点上的智能化,并没有给酒店的管理、运营以及用户的体验上带来本质的飞跃。如今,各种创新技术逐步成熟,并且伴随着Z世代成为主流消费人群,用户对酒店的需求也在不断提升,酒店智能化将进入全新的阶段。在前不久......
  • C# 利用base继承父类的传参方法(全面的例子,包括虚方法和重写方法)
     显而易见,将我这段代码跑一遍就可以理解并会用了  publicinterfaceIAnimal{voidMove();}publicclassAnimal:IAnimal{publicstringName{get;set;}publicintAge{get;set;}publicAnimal(stringname,......
  • 微服务 - 集群化 · 服务注册 · 健康检测 · 服务发现 · 负载均衡
    服务集群化集群化工具选择性很多,这里选Consul工具;官网:https://www.consul.io本篇计划用Docker辅助部署,所以需要了解点Docker知识;官网:https://www.docker.comConsul概括Consul是由N多个节点(机台/虚拟/容器)组成,每个节点中都有Agent运行着,各节点间用RPC通信,所有节点......
  • 天猫食品饮料数据分析:2月份茶饮料品牌销量TOP10排行榜!
    近年来,茶饮料品类逐渐丰富,也在潜移默化中激发消费者的购物欲望,茶饮料行业的整体市场规模也不断增长。根据鲸参谋电商数据显示,2023年2月份在天猫平台上,茶饮料相关产品的月销量将近149万件,环比增长约15%;月销售额达到6675万元,环比增长约6%。*数据源于鲸参谋-行业趋势分析根据2月份茶饮......
  • linux 磁盘设备
       查看Linux系统的I/O调度器查看Linux系统的I/O调度器一般分成两个部分,一个是查看Linux系统整体使用的I/O调度器,另一个是查看某磁盘使用的I/O调度器。查看当前系统支持的I/O调度器,使用如下命令 [[email protected]]#dmesg|grep-ischeduler[4.8......
  • 009.关机 重启 注销
    关机重启注销shutdown-hnow立即进行关机shutdown-h11分钟后进行关机shutdown-rnow立即重新启动计算机halt关机reboot现在重新启动计算机sync把内存数据同步到磁盘su-root切换到系统管......
  • 什么是PCB?什么是PCBA?PCB和PCBA的区别?
    什么是PCB?什么是PCBA?二者有何分别?说到PCB这个话题,大家都知道是电路板的一些相关知识。但提到PCBA,很多人不是很清楚,甚至会和PCB混为一谈。下面我们聊聊PCB与PCBA有何不同之处?什么是PCB?PCB中文名称为印制电路板,又称印刷线路板,是重要的电子部件,是电子元器件的支撑体,是电子元器件电......
  • element Compressor图片压缩且上传-
      上传了压缩后的照片 <template><div><!--<el-upload:class="uploadDisabled"ref="upload":action="action":headers="headers"list-type="picture-card":limit="1":file-......
  • CCNA考试流程、考试费用及考场介绍
    4月15日CCNA+HCIA新一轮班级开班CCNA(CiscoCertifiedNetworkAssociate)思科认证网络工程师 一、CCNA认证考试流程ccna考试认证,先学习CCNA理论知识,然后下载CCNA考试题库,预约考试,参加并通过考试。CCNA证书如下: 二、CCNA认证考试相关内容 考试要求:对学历、专业、年龄没有要求。考......
  • 基于DNN深度学习网络的OFDM信号检测算法的仿真,对比LS和MMSE
    1.算法描述        随着无线通信的快速发展,5G正逐渐成长为支撑全社会各行业运作的大型基础性互联网络,其服务范围的大幅扩展对底层技术提出了诸多挑战,尤其是作为物理层关键技术之一的正交频分复用(OrthogonalFrequencyDivisionMultiplexing,OFDM)。近来,深度学习因......