日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

qwt自定义时间标尺TimeScale

發布時間:2023/12/9 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。