问题描述

在图形控件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 正确坐标,问题解决。

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

  1. 开发者模式里添加文件管理项跳转

    开发者模式里添加文件管理项 点击跳转到文件管理且只能这一个入口能进到文件管理 首先原生launcher下要隐藏文件管理 去到packages/apps/Launcher3/src/com/androi ...

  2. MFC ListControl控件使用InsertItem()函数插入新的列表项后不能显示列表项名称

    如题,在OnInitDialog()函数中,使用InsertItem()函数插入新的列表项后运行程序,没有显示出列表项的名称,把控件属性里的"Owner Data"改为false就 ...

  3. Navicat cannot add foreign key constraint或者添加外键后不显示

    首先我们要明确不能添加外键的原因有很多种,我遇到的也只是其中一种在这里分享出来.如果能帮到大家就再好不过了. 右键->设计表. 检查你的数据库引擎是什么, 因为我建的表数据库默认引擎是MyISA ...

  4. qt自定义窗口添加父窗口后,显示不出来

    提要 继承于QDialog的类,在被其它类创建的改对象时,没设置父窗口前显示正常,设置了父窗口后显示不出来. 自定义窗口的构造函数 configBtnNameDialog::configBtnName ...

  5. ArcGIS JS先添加动态图层,再添加切片图层后不显示

    场景: 现在要在一个地图上添加动态服务图层和切片服务图层,当创建好图层之后,使用map.addLayer()方法,先把动态图层加到地图上,再把切片图层加到地图上,出现一个现象:只能看到加载的动态图层, ...

  6. Maven项目中,添加依赖项后仍然出现找不到该jar包的解决方法

    写maven项目的时候,明明已经在pom.xml文件中加入和对应文件的依赖,但是程序运行时仍然报错,说找不到对应的jar包.如下图所示. 出现这种错误的原因是,虽然加入和依赖,但是并没有允许idea使 ...

  7. 修改Visual Studio中“添加新项”时默认添加的命名空间

    最近要修改一个以前开发的项目,项目中并没有运用Linq,但是我在VS2008中添加新项都会自动添加Linq命名空间,每次都要手动去删除很麻烦,就想想有没有办法可以修改这个"添加新项" ...

  8. R语言使用ggpubr包的ggarrange函数组合多张结论图(垂直堆叠组合)、并为组合后的图像添加图形的注释信息(标题,副标题,坐标轴,字体,颜色等)

    R语言使用ggpubr包的ggarrange函数组合多张结论图(垂直堆叠组合).并为组合后的图像添加图形的注释信息(标题,副标题,坐标轴,字体,颜色等) 目录

  9. ArcEngine中shp中先加入要素然后删除一部分要素后,放大图形后不显示的问题解决方法...

    ArcEngine中shp中先加入要素然后删除一部分要素后,放大图形后不显示的问题解决方法 (一)问题描述如下: shp中先加入要素然后删除一部分要素后,图形为什么显示不正常了 //--------- ...

最新文章

  1. 查询提升200倍,ClickHouse你值得拥有!
  2. map的内存释放问题
  3. 互联网1分钟 |1218
  4. Codeforces987F AND Graph
  5. SparkShell中提交任务java.net.ConnectException: Call From henu4/192.168.248.244 to henu2:9000 failed on co
  6. 首页显示登陆用户名php,首页登录后怎么在首页显示用户名以及隐藏登录框?
  7. java递归统计_Java类递归计数
  8. java为什么要连接Mysql_为什么要启动mysql workbech,java才能连接mysql数据库呢?
  9. EasyClick IOS 自动化测试报错
  10. 油猴超神好用脚本推荐
  11. 100个Python实战项目(七)实现摩斯密码翻译器
  12. 利用计算机发布调度命令时必须严格遵守,调度命令
  13. 一个Java菜鸟的学习之道~~~
  14. 文献阅读:Stylized Neural Painting
  15. Android碎碎念4:避免Dialog抢Activity焦点
  16. AB实验平台:为什么AB实验平台必不可少?
  17. Flutter 新闻客户端 - 09 详情页展示、分享、远程真机调试
  18. 短期嵌入式培训学什么?
  19. 1.递归实践:小白上楼梯
  20. SAP中通过EXCEL直接复制到采购申请或订单

热门文章

  1. 统计学和python结合起来打的比赛_数学与Python有机结合及统计学、微积分、线性代数相关资源、图形软件...
  2. Python GUI编程(Turtle)——绘制中国五星红旗
  3. 【Linux学习】Linux命令卸载软件
  4. iqooneo5支持nfc功能吗
  5. “网络连接”不显示“本地连接”解决办法总结
  6. jQuery-删除元素
  7. 小游戏实现---三子棋至N子棋
  8. 电商红利见顶?零食品牌为啥都学良品铺子做O2O
  9. 高大上的非线性编辑是怎么一回事?
  10. Exynos4412 移植Linux-6.1(七)挂载Ramdisk文件系统,【已解决】Couldn‘t find valid RAM disk image starting at 0