关于QGraphicsItem的几个问题

weixin_40898912 2017-11-07 01:53:07
最近写程序,遇到个问题。继承了QGraphicsRectItem的子类,重写了boundingRect,shape和paint后,在原坐标添加两次item,第一个item会消失,然后向下移动。请问这是为什么?

还有,请大神和我详细讲解下boundingRect,shape和paint三者的作用和区别。是不是前两者重写后必须也重写paint???

第三个问题,继承了QGraphicsRectItem的子类,其中有几个方法,比如this->rect,的rect和显示在scene上的图形有什么联系?因为有时我发现rect有值而scene上没有显示出图形。setPos设置的坐标是逻辑坐标还是设备坐标?

小弟新人,真心请教大神们帮我解答疑惑。百度过很多答案,都不太详细,有的更是答非所问。
...全文
505 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Liuzwang 2017-12-06
  • 打赏
  • 举报
回复
三者联系楼上讲了,paint可以不用重写,这个就是决定item的颜色,边框之类的,颜色,边框,要改变,那就要重写。item,scence,view自带坐标系,item默认setpos设置也是在自己坐标系设置的坐标。当然,item可以转换到scence的坐标,有相关的转换函数。
parkseyoung 2017-12-06
  • 打赏
  • 举报
回复
在原坐标添加两次第一个item应该不会消失,发生偏移有两种情况: 1.可能是你的QPainter 的translate之后没有save和restore 2.可能是你的 QPainterPath在move之后添加的 建议你使用setZValue函数进行控制层次关系 boundingRect指的是这个item的区域大小,也就是显示的区域,注意这个区域只能是矩形 shape指的是这个item的可感知的形状,就是说如果it em设置了鼠标点击事件,那么鼠标只有移动到这个形状里面才能接受点击事件,shape可与boundingRect不一样。 paint是画出boundingRect里面的你想展示出来的东西 第三个问题没太懂你的意思,setpos一般设置的是左上角的坐标
赵4老师 2017-11-07
  • 打赏
  • 举报
回复
百度搜相关关键字。

16,173

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧