QT实现Halcon窗口的缩放,拖拽的方式

一、背景

        Halcon软件中的窗口可以实现图片的精准缩放和拖拽,特别的一点可以将图片缩放到窗口以外,所以在思考QT如何实现。

 二、实现方式

        方式上选择模型/视图模型,QGraphicsView,其中图片在哪个环节加载困扰了我一段时间。比如QGraphicsView和QGraphicsScene,视口和场景都可以显示图片。场景加载有个问题,当场景小于视口尺寸时则会居中显示,不符合想要的效果。最终选择了QGraphicsItem去显示图片。

        其实Qt提供了继承自QGraphicsItem 的子类:QGraphicsPixmapItem专门用于显示图片,所以最佳的方案是使用QGraphicsPixmapItem。

三、最终效果

四、注意事项

        在实现缩放QGraphicsPixmapItem时注意选择合适的方式,最开始选择setScale,然后去实现聚焦到鼠标正下方总是达不到想要的效果,现在想来应该是计算坐标偏移时没有乘上缩放因子。

        建议使用QTransform坐标转换的方式去做,在使用QTransform.translate(qreal x,qreal y)时就已经考虑到了缩放因子,很方便。

附上一小段缩放的代码,如下所示:

	myGraphicsItem->setTransform(QTransform().scale(scale_X, scale_Y));
	QPointF endItem= myGraphicsItem->mapFromScene(startScene);
	curTransform = myGraphicsItem->transform();
	myGraphicsItem->setTransform(curTransform.translate(endItem.x() - startItem.x(), endItem.y() - startItem.y()));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值