QT QGraphicsView框架

一、概述

1、QGraphicsView是Qt框架提供的一个用于显示和处理大量2D图形元素的类。它是基于Model-View-Controller设计模式的,其主要作用是将QGraphicsScene中的图元元素显示在视图中,并提供交互和操作这些图形元素的功能。

2、QGraphicsView可以显示QGraphicsScene中的图形元素,并支持平移、缩放、旋转等操作,提供了丰富的交互功能,例如捕捉鼠标事件、键盘事件和拖放操作等。

3、在Qt界面库中,对于图形的绘制,可以使用QPainter实现普通二维图形的绘制,该方法在paintEvent事件里编写绘图程序,其本质绘制的图形是位图,这种方法更适合于绘制复杂度不高的固定图形,并且不能实现图项的选择、编辑、拖放、修改等交互功能。

4、对于需要绘制大量的、需要交互的图形,可使用QGraphicsView绘图架构,它是一种基于图形项的模型/视图模式,这种方式可以在一个场景中绘制大量图元项,且每个图元项都是可选择、可交互的。

二、QGraphicsView框架

1、QGraphicsScene(场景类)

 场景类该类提供绘图场景,场景是不可见的,是一个抽象的管理图形项的容器,可以向场景中添加图形项,获取场景中的某个图形项,主要功能如下:

(1)提供管理大量图元的快速接口。

(2)传播事件到场景中的每个图元。

(3)提供未经变换的渲染功能,主要用于打印。

(4)管理图元的状态,如图元选择和焦点处理。

2、QGraphicsView(视图类)

视图类:该类提供绘图的视图组件,用于显示场景中的内容。可以为一个场景设置几个视图,用于对同一个数据提供不同的观察方式。主要功能如下:

(1)显示场景

QGraphicsView可以将QGraphicsScene中的图形项实时地渲染到窗口中,可以让用户看到和操作这些图形元素。

(2)缩放和平移

用户可以使用鼠标滚轮或者快捷键对场景进行缩放,并通过拖到场景来进行平移操作。这使得用户可以浏览大型场景,以及查看和编辑图形项地细节。

(3)坐标转换

QGraphicsView提供了坐标转换功能,可以将场景中地坐标转换为视图中地坐标,或者反之。这对于实现图形项地交互、编辑和定位非常有用。

(4)鼠标交互

QGraphicsView可以捕捉鼠标事件,并根据用户地输入执行相应地操作,例如拖曳、点击、双击等。这使得用户可以与图形项进行交互,并根据执行自定义地操作逻辑。

3、QGraphicsItem(图形项类)

图形项类:该类提供了一些基本的图形元件,也可以在此基础上自定义图形项,它支持各种事件的响应,如鼠标事件、键盘事件、拖放事件等,以实现图形的交互功能,下面例举一些标准图元:

(1)QGraphicsRectItem(矩形)

(2)QGraphicsPathItem(路径)

(3)QGraphicsLineItem(直线)

(4)QGraphicsSimpleTextItem(简单文本)

(5)QGraphicsTextItem(文本浏览)

(6)QGraphicsItem(是图元的基类,用户可以继承QGraphicsItem实现自定义图元)

4、三者之间的关系: 视图---场景---图元

QGraphicsView比作一台手机,那么QGraphicsScene相对于手机里面的app,比如是音乐播放器的话,那么QGraphicsItem就是里面的歌曲,在复杂点的话,就可以是播放器里面的一切,不单单是歌曲,如播放、暂停按钮、歌词、歌手海报啥的。

三、QGraphicsView框架事件传播机制

由于QGraphicsView继承自QWidget,所以QGraphicsView同样继承了事件功能。我们以拖曳事件为例,当时图接受到拖曳事件时,QGraphicsView框架会将拖曳事件翻译为QGraphicsSceneDragDropEvent事件,再发送到场景,场景接管事件,再把事件发送到光标下接受拖曳的第一个图元。

  • 66
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值