【qt】GraphicsView绘图架构

一.为什么姚搞绘图架构

我们前面的绘图都是用的绘图事件,那么为什么我们现在还需要讲GraphicsView呢?因为这个是可交互的,可移动,编辑的.

二.视图

UI组件里面就有GraphicsView,可以来直接的拖放.
视图是用来显示场景里面的多个图形项的.
如果场景比视图小的话,默认放中间!

三.场景

场景是一个无形的容器,可以添加多个图形项.
同时也可以为场景设置多个视图.

四.图形项

相当于绘图的基本元件.
在这里插入图片描述
可以支持鼠标,拖放,键盘等
可以有子图项
可以设置画笔,画刷

五.坐标系

这样我们就能明白3者的关系,视图包含场景,场景包含图形项,图形项还可以包含图形项.
但是有趣的事,3者都有不同的坐标系!

六.验证说法

1.ui设计

在这里插入图片描述

2.创建场景

头文件中
在这里插入图片描述
创建场景
在这里插入图片描述
场景比视图小,默认是放在视图的中间.

3.视图设置场景

在这里插入图片描述

4.创建图形项

场景本来就是无行的,添加了也看不见,所以我们要添加图形项,先来创建
在这里插入图片描述

5.图形项设置位置

在这里插入图片描述

6.场景添加图形项

在这里插入图片描述
运行结果:
这个框框就是我们的图像项!
在这里插入图片描述

7.添加画刷

在这里插入图片描述

运行结果:
在这里插入图片描述

8.子图形项

在这里插入图片描述

运行结果:
在这里插入图片描述

9.图形项设置标识

在这里插入图片描述
运行结果:
在这里插入图片描述
就可以选择item2来拖放了!

七.鼠标事件结合

功能说明:
当我们的鼠标在视图的区域内移动和点击时就显示坐标,但是我们有三个坐标系,就显示3中坐标.

1.重载图形视图类

我们是ui拖放的视图组件,所以默认的视图类是没有重写鼠标事件的,所以我们需要自定义图形视图类!
在这里插入图片描述

基类选择这个可以少写一些东西,我们等会改一下就行了.
在这里插入图片描述
头文件中,修改继承我们的视图
在这里插入图片描述
红框内的删除就不报错了
在这里插入图片描述

2.提升为

对视图右键
在这里插入图片描述
点击添加,类名是刚刚我们自定义的那个
在这里插入图片描述
点击提升
在这里插入图片描述

3.鼠标事件发出信号

在QGraphicsView中找到我们的鼠标事件的函数
可以用ctrl加F查找!
在这里插入图片描述
头文件中重写
在这里插入图片描述
添加两个信号用于鼠标事件来发出当前鼠标点的坐标信号
在这里插入图片描述
具体实现:
在这里插入图片描述

4.功能实现

在mainwindow.h中添加槽函数,按on_发送者_信号的格式可以自动的关联!
在这里插入图片描述
添加3个坐标标签:
在这里插入图片描述
实现:
在这里插入图片描述
运行结果:
在这里插入图片描述

5.注意

当出现了这样的错误,就是没加头文件,自己记得加,我就不截图了.
在这里插入图片描述

6.说明

mouseMove鼠标事件默认是鼠标按动以后移动才算,如果要鼠标一动就算的话,可以添加:

在这里插入图片描述
现在你再去试试呢,哈哈.

八.总结

主要是知道视图,场景,图形项三者的关系,还有三者不同的坐标系,视图是在左上角是原点,场景和图形项都是自定义的.
还有就是用GraphicsView这些的优点,可交互等等…

加油!

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值