日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qwt自定义时间标尺TimeScale

發(fā)布時間:2023/12/9 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qwt自定义时间标尺TimeScale 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

需要重載QwtScaleDraw類的virtual QwtText label(double)const;方法

該方法在需要繪制scale label時會調(diào)用。

主要思路是標尺上的點對應(yīng)QDateTime::toTime_t()的值。然后重載label方法,在QwtText label(double v) const 方法中將參數(shù)v轉(zhuǎn)化為QDateTime對象,再轉(zhuǎn)為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); }

調(diào)用方法:

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

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

實現(xiàn)之后發(fā)現(xiàn)一個問題,就是當qwt標尺的label在左右兩端顯示時,會把標尺撐得變形??梢岳弥剌d的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; }

調(diào)用方法:

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

轉(zhuǎn)載于:https://www.cnblogs.com/oceanking/archive/2012/09/13/2683315.html

總結(jié)

以上是生活随笔為你收集整理的qwt自定义时间标尺TimeScale的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。