qwt自定义时间标尺TimeScale

需要重载QwtScaleDraw类的virtual QwtText label(double)const;方法

该方法在需要绘制scale label时会调用。

主要思路是标尺上的点对应QDateTime::toTime_t()的值。然后重载label方法,在QwtText label(double v) const 方法中将参数v转化为QDateTime对象,再转为QString。

timescaledraw.h

#ifndef TIMESCALEDRAW_H
#define TIMESCALEDRAW_H#include <qwt_scale_draw.h>
#include <QDateTime>class TimeScaleDraw : public QwtScaleDraw
{public:TimeScaleDraw();virtual QwtText label(double) const;
};#endif // TIMESCALEDRAW_H

 

timescaledraw.cpp

#include "timescaledraw.h"TimeScaleDraw::TimeScaleDraw()
{
}QwtText TimeScaleDraw::label(double v) const
{QDateTime datetime;datetime.setTime_t((uint)v);
return QwtText(datetime.date().toString(Qt::ISODate); }

调用方法:

qwtplot->setAxisScaleDraw(QwtPlot::xBottom, new TimeScaleDraw());

-------------------------------------------------------

实现之后发现一个问题,就是当qwt标尺的label在左右两端显示时,会把标尺撑得变形。可以利用重载的label方法判断在左右两端附近时返回一个空的QwtText即可。

具体代码如下:

timescaledraw.h

#ifndef TIMESCALEDRAW_H
#define TIMESCALEDRAW_H#include <qwt_scale_draw.h>
#include <QDateTime>class TimeScaleDraw : public QwtScaleDraw
{
double minLabelPos, maxLabelPos; public:TimeScaleDraw(const double minLabelPos, const double maxLabelPos);virtual QwtText label(double) const;void myinit(const double minLabelPos, const double maxLabelPos); };#endif // TIMESCALEDRAW_H

 

timescaledraw.cpp

#include "timescaledraw.h"TimeScaleDraw::TimeScaleDraw(const double minLabelPos, const double maxLabelPos)
{
myinit(minLabelPos, maxLabelPos);
}QwtText TimeScaleDraw::label(double v) const {QDateTime datetime;if(v < minLabelPos || v > maxLabelPos)return QwtText();datetime.setTime_t((uint)v);return QwtText(datetime.date().toString(Qt::ISODate); }void TimeScaleDraw::myinit(const double minLabelPos, const double maxLabelPos) {
this->minLabelPos = minLabelPos;this->maxLabelPos = maxLabelPos; }

调用方法:

qwtplot->setAxisScaleDraw(QwtPlot::xBottom, new TimeScaleDraw(xx, xxxx));

转载于:https://www.cnblogs.com/oceanking/archive/2012/09/13/2683315.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二维数组排序 行与列分别升序_6个经典排序技巧,尤其是最后一个,绝对的个性化...

点击上方"Excel函数公式"免费订阅排序&#xff0c;从字面意思理解就是将一组“无序”的记录调整为“有序”的记录。在Excel中&#xff0c;排序是一种常见的操作&#xff0c;那么&#xff0c;如何高效的完成排序操作呢&#xff1f;一、Excel排序&#xff1a;常规(命令…

java平移变换_java移位运算符:(左移)、(带符号右移)和(无符号右移)。...

1、 左移运算符 左移运算符<<使指定值的所有位都左移规定的次数。 1)它的通用格式如下所示&#xff1a; value << num num 指定要移位值value 移动的位数。 左移的规则只记住一点&#xff1a;丢弃最高位&#xff0c;0补最低位 如果移动的位数超过了该类型的最大位数…

Quantumas,作者太NB了,俺发现俺菜得跟猪一样!!!

前不久一个名为“Quantumas”的3D Demo引起了我们的关注&#xff0c;其作者称“这个引擎整合了各种最先进的渲染技术&#xff0c;在画质上超越了虚幻3&#xff0c;部分超越了CE2”&#xff0c;而我们在这个Demo中也的确看 到了高阶动态范围、多频软阴影、空间环境遮掩、HDR景深…

python制作查询网页_peewee数据查询之分页返回——python学习笔记

请求示例&#xff1a;后端代码# 查询客服列表kf.route("/list", methods[POST])def kf_list():start request.values.get(start)length request.values.get(length)try:find model.py_user_kf.select().order_by(model.py_user_kf.create_time).paginate(int(star…

java薪资年龄交叉表_巧用参数实现交叉表行列互换

对于普通的没有olap分析功能的快逸报表而言&#xff0c;一旦发布到web页面后&#xff0c;其样式就被固定了&#xff0c;如果想把报表换种形式展现通常的做法是重新设计一张报表模板来实现&#xff0c;难道快逸报表就没有一种特殊的方法可以解决这样的需求吗&#xff1f;答案就在…

spring 环境

引用&#xff1a;http://www.189works.com/article-96241-1.html 准备阶段&#xff1a; 到Spring官网下载所需的API包,其中spring-framework-X.X.X.RELEASE-with-docs.zip压缩包需要下载&#xff0c;里面的dist目录下有所需的API,还有一个是com.springsource.org.apache.common…

php 上传多文件_php 多文件上传的实现实例

首先向大家讲解一下实现的方法。要实现多文件上传&#xff0c;我们可以在form表单中添加多个input file域&#xff0c;然后将这些input file的name属性设置为相同的名称且使用数组的形式命名&#xff0c;例如filename[]。至于文件上传的php代码和单个文件上传是一样的道理。下面…

JavaScript代码优化实战之一:缓存变量,关键字过滤

无意中看到某网站的一段JS代码&#xff1a; 1 function clearSearchText(){2 var searchtext document.getElementById("searchwordl").value3 document.getElementById("searchwordl").value"";4 }5 function replaceALL(){6 va…

html.parser python_python模块之HTMLParser

HTMLParser是python用来解析html的模块。它可以分析出html里面的标签、数据等等&#xff0c;是一种处理html的简便途径。 HTMLParser采用的是一种事件驱动的模式&#xff0c;当HTMLParser找到一个特定的标记时&#xff0c;它会去调用一个用户定义的函数&#xff0c;以此来通知程…

php 5.4 aws,使用 Amazon EC2 管理 AWS SDK for PHP 实例 - 适用于 PHP 的 AWS 开发工具包

AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异&#xff0c;请参阅中国的 AWS 服务入门。本文属于机器翻译版本。若本译文内容与英语原文存在差异&#xff0c;则一律以英文原文为准。使用 Amazon EC2 管理 AWS SDK for PHP 实例以下示例演示如何&…

python图片分类毕业设计成果报告书_毕业设计成果报告书模板.doc

毕业设计成果报告书成 果&#xff1a;姓 名&#xff1a;学 号&#xff1a;专 业&#xff1a;区 队&#xff1a;指导老师&#xff1a;二〇XX年X月目  录TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc432664597" 一、选题背景 PAGEREF _Toc432664597 \h 1HYPE…

常用正则表达式例子

1。^\d$  //匹配非负整数&#xff08;正整数 0&#xff09; 2。^[0-9]*[1-9][0-9]*$  //匹配正整数 3。^((-\d)|(0))$  //匹配非正整数&#xff08;负整数 0&#xff09; 4。^-[0-9]*[1-9][0-9]*$  //匹配负整数 5。^-?\d$    //匹配整数 6。^\d(\.\d)?$  //…

msf生成php,使用msfpayload生成后门(asp,aspx,php,jsp,exe)等

msfpayload与msfencode参数说明执行msfpayload -h查看都有哪些参数执行msfencode -h查看都有哪些参数生成backdoor类型可以生成asp、aspx、php、jsp、war、exe等多种类型,下面介绍的使用方法就不一一测试了.msfpayload生成linux backdoor目标机器运行linux2,本机监听下端口,使用…

概括ADO.NET数据库连接的所有形式(基础)

概括ADO.NET数据库连接的所有形式(基础&#xff09; 可能大家进来会喷笔者&#xff0c;这么基础的知识还放在首页。那么笔者就要问问大家了&#xff0c;你可能熟悉其中部分数据库读取的形式&#xff0c;但是熟悉全部的估计很少&#xff0c;或者你完全忘记了&#xff0c;因为这些…

python 进程池不足_python 进程池pool简单使用

平常会经常用到多进程&#xff0c;可以用进程池pool来进行自动控制进程&#xff0c;下面介绍一下pool的简单使用。需要主动是&#xff0c;在Windows上要想使用进程模块&#xff0c;就必须把有关进程的代码写if __name__ ‘__main__’ :语句的下面&#xff0c;才能正常使用Wind…