QGraphicsScene里添加图形项后不显示的问题处理

问题描述

在图形控件QTabWidget中设置4个页面,每个页面的view关联上一个图形场景,在该4个场景里面程序初始化添加相同的7个图形项QGraphicsItem,程序运行后4个页面图形显示都正常,现在程序运行中根据运行情况动态添加图形项出现问题,在页面弹出右键菜单后,点击菜单增加一项图形项后,居然只有一个页面正常显示出临时增加的图形项,其他3个页面同样操作后却不能显示想要的图形项。

寻找问题原因

1、怀疑是其他3个页面场景scene没有成功添加图形项

为排查,在程序调试输出场景添加前后图形项item数目变化,正常得页面调试输出如下:

************scene 增加前:7 ************scene 增加后:8 item:
************ToolBlockItem::paint
************ToolBlockItem::paint

不正常的页面输出如下:

************scene 增加前:7 ************scene 增加后:8 item:

分析后结论:场景里已经动态增加了图形项!
通过该实验,发行正常的在tiem类paint事件被调用,而异常的没有被调用。要继续排查异常页面item的paint事件没有被显示的原因。

2、继续做实验,原因找到

怀疑自己编写的item有问题,在scene增加系统自带三角形item,程序运行后相应鼠标动作后,意外发行在第3个异常页面的右下角露出三角形一小部分!问题原因找到:item图形在加入场景时,坐标放在tab窗口视口之外去了,item增加到scene后,因为不可见,该item画图事件永远也不可能被调用,所以无法显示出来。

问题解决方法

梳理一遍QT图形编程GraphicsView架构下的坐标体系,场景、视图、图形项的坐标都不一样,每个对象事件中关于坐标的参数也不一样,这个问题清楚后,在程序里通过setPos设置item 正确坐标,问题解决。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值