Qt中通过QGraphicsScene 和QGraphicsView 实现界面等比例缩放。

        在工作中,有的界面需求需要实现这个界面的等比例缩放,我在网上查找了好多资料都没有发现很好的解决方案,在一次偶然尝试中,发现了QGraphicsScene 和QGraphicsView 搭配使用,可以让嵌入在它内部的玩意进行缩放,于是我尝试着把我原来主窗口放进去,结果缩放的效果也很好很流畅。

        下面展示下效果:

缩放

但是后面发现虽然可以等比例缩放,但也出现了一些问题,关于鼠标事件的,这个最后再说吧,先来看看它是怎么实现的。

 首先创建一个widget作为容器,图中的gridlayout_197 是我主窗口的布局,这个根据自己程序中的布局名字来更换,把这个widget的布局设置为该布局。

然后创建QGraphicsScene 和QGraphicsView 对象,然后将这个容器widget添加到scene当中。

之后就是配置view,最后把view设置为我们主窗口的中央窗口部件。

   ​​​​​接着在resizeEvent事件中实现缩放的功能     

 将我们主窗口嵌入这个QGraphicsView之后引发了很多奇奇怪怪的问题,例如鼠标停留在listwidget控件的item上,然后缓慢的移开它的范围,这个item依旧显示着鼠标悬浮在它上方的样式没有回复正常样式。这些问题都是关于鼠标事件的,我猜测是QGraphicsView它内部对鼠标事件的处理影响了原来鼠标事件的传递,后面解决的办法是对mousemove,mousepressed等事件进行重写,然后在里面手动传送事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值