Qt中移动QGraphicsItem的注意问题,path的闭合

本文探讨了在使用QPainterPath绘制复杂封闭曲线时遇到的拖拽问题,并详细解释了如何通过调整moveTo函数的使用来确保路径被视为封闭,从而实现对封闭区域的拖拽操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要针对QGraphicsPathItem


一般一个复杂的封闭曲线可能是由多条简单曲线拼接而成


比如我的项目中,使用了分段bezier,每段bezier至多为二次。


每段bezier我都保存了其3个或者2个control point


于是我构造path的时候,每次都先moveTo到bezier的起点,然后quadTo或者lineTo


封闭曲线是构造完成了,但是却无法点击封闭曲线内部区域来drag曲线,找原因还找了挺久。


最后想起,moveTo函数将当前起始点移动到新的位置,然后会结束上一条subpath,开始一条新的subpath


官方说明如下:


void QPainterPath::moveTo ( const QPointF & point )

Moves the current point to the given point, implicitly starting a new subpath and closing the previous one.


这样就导致我的封闭曲线在QPainterPath中并不被认为是封闭的。于是自然也无法drag。


最后我将moveTo都去掉,问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值