qgraphicsview鼠标移动图片_交互式QGraphicsView(平移/缩放/旋转)-阿里云开发者社区...

简述

Graphics View提供了一个平台用于大量自定义 2D 图元的管理与交互框架包括一个事件传播架构支持场景 Scene 中的图元 Item 进行精确的双精度交互功能。Item 可以处理键盘事件、鼠标按下、移动、释放和双击事件同时也能跟踪鼠标移动。

和 Google 地图一样在管理大量 Item 的时候通常需要 View 具有交互平移/缩放/旋转功能。

交互式 QGraphicsView

便于以后复用实现一个交互式 QGraphicsView - InteractiveView。

主要功能包括

平移

方式一鼠标左键按下然后移动

方式二按下上/下/左/右键分别向各个方向移动

缩放

方式一鼠标滚轮向上滚动放大向下滚动缩小

方式二按加号键带 Shift进行放大按减号键缩小

旋转按空格键逆时针旋转回车键顺时针旋转

效果

源码

interactive_view.h

#ifndef INTERACTIVE_VIEW_H

#define INTERACTIVE_VIEW_H

#include

class QWheelEvent;

class QKeyEvent;

class InteractiveView : public QGraphicsView

{

Q_OBJECT

public:

explicit InteractiveView(QWidget *parent = 0);

// 平移速度

void setTranslateSpeed(qreal speed);

qreal translateSpeed() const;

// 缩放的增量

void setZoomDelta(qreal delta);

qreal zoomDelta() const;

protected:

// 上/下/左/右键向各个方向移动、加/减键进行缩放、空格/回车键旋转

void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;

// 平移

void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;

void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;

void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;

// 放大/缩小

void whee

你可能感兴趣的:(qgraphicsview鼠标移动图片_交互式QGraphicsView(平移/缩放/旋转)-阿里云开发者社区...)