c语言拖放方式,c – Qt:实现平移(拖动)的正确方法

博客讨论了在QGraphicsView中遇到的一个问题,即当使用自定义代码通过鼠标滚轮点击实现平移功能时,在高缩放比例下平移会失效。作者提供了一个自定义的mouseMoveEvent实现,但在特定情况下(如单位矩阵缩放1,000,000倍)会导致视图卡住。文章寻求关于正确自定义setDragMode()以避免此类问题的建议和解决方案。
摘要由CSDN通过智能技术生成

QGraphicsview有一个方法setDragMode(ScrollHandDrag),可以通过鼠标左键单击进行平移.但是我想在单击鼠标滚轮(中间按钮)时启用平移并创建以下自定义实现来平移:

//Within a custom derived class of QGraphicsView

//pan is true when wheel is clicked and false when released

//last Pos is defined somewhere else in the class

void GridView::mouseMoveEvent(QMouseEvent *event){

if(pan){

QPointF currentPos = event->pos();

QPointF relPos = currentPos - lastPos;

lastPos = currentPos;

//this is what creates the panning effect

translate(relPos.x(), relPos.y());

}

QGraphicsView::mouseMoveEvent(event);

}

这在大多数情况下都可以正常工作.但是,例如,如果我将单位矩阵缩放1,000,000,则此方法会失败并停止平移(就像视图卡住一样).使用setDragMode()时不会出现此问题

什么是setDragMode()的正确自定义实现,因此通过滚轮点击启用它?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值