Qt图形图像开发曲线图表模块QChart库缩放/平移详细方法与实例-创新互联

1、使用QChartView来缩放

(1)用鼠标框选一个矩形,把图放大到这个矩形

创新互联公司是一家业务范围包括IDC托管业务,网站空间、主机租用、主机托管,四川、重庆、广东电信服务器租用,成都棕树电信机房,成都网通服务器托管,成都服务器租用,业务范围遍及中国大陆、港澳台以及欧美等多个国家及地区的互联网数据服务公司。

QChartView::setRubberBand(QChartView::RectangleRubberBand);//XY方向同时放大到鼠标画出的矩形大小(也可以设置为只放大X轴或Y轴)

(2)setRubberBand函数同时也能使鼠标右键,具备缩小图的功能。

2、使用Qchart来平移和缩放

QChart::scroll(-10, 5);//整体平移(-10, 5),两个参数分别为Δx和Δy

QChart::zoomIn(x,y,width,height);//缩放到指定的矩形

QChart::zoom(0.9)  //整体缩放,参数为放缩系数,<1代表缩小,>1代表放大

QChart::zoomReset()  //把所有做过的zoomIn、zoomOut、zoom全部撤销

3、使用QValueAxis或者QDateTimeAxis来平移和缩放

原理就是,通过设置X/Y轴的范围来实现平移和缩放。

例如,当前显示X的显示范围为[20, 50],如果我们把X轴的显示范围扩大到[0, 80],这样做的效果就是显示的图形变小了,也就实现了缩放。

例如,当前显示X的显示范围为[0, 30],如果我们把X轴的显示范围扩大到[10, 40],这样做的效果就是显示的图形左移了,也就实现了平移。

示例代码:

QValueAxis *axisX = dynamic_cast(Chart->axisX(pLineSeries));//

qreal cur_x_min = axisX->min();

qreal cur_x_max = axisX->max();

axisX->setRange(cur_x_min + 20, cur_x_max + 20);//图形向左平移20(为什么+代表左移?仔细想想就明白了)

放缩与平移的示例代码同理

Qt曲线图表模块QChart库缩放、平移实例

运行效果如下:

Qt图形图像开发曲线图表模块QChart库缩放/平移详细方法与实例

.h文件代码

#ifndef QTCHARTDEMOZOOM_H_38020FA5_FC74_4395_A807_61BF924D2F06
#define QTCHARTDEMOZOOM_H_38020FA5_FC74_4395_A807_61BF924D2F06
#include 
using namespace QtCharts;
class QtChartDemoZoom : public QChartView
{
 Q_OBJECT
public:
 QtChartDemoZoom(QWidget* pParent = nullptr);
 ~QtChartDemoZoom();
protected:
 virtual void mouseMoveEvent(QMouseEvent *pEvent) override;
 virtual void mousePressEvent(QMouseEvent *pEvent) override;
 virtual void mouseReleaseEvent(QMouseEvent *pEvent) override;
 virtual void wheelEvent(QWheelEvent *pEvent) override;
private:
 bool m_bMiddleButtonPressed;
 QPoint m_oPrePos;
};
#endif //QTCHARTDEMOZOOM_H_38020FA5_FC74_4395_A807_61BF924D2F06

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:Qt图形图像开发曲线图表模块QChart库缩放/平移详细方法与实例-创新互联
路径分享:http://scyanting.com/article/giees.html