qml 不刷新 放大还原_如何使用QML Scale Element进行不同来源的增量缩放

本文探讨了在QML中使用Scale Element进行视图缩放时遇到的问题,特别是元素不按照预期在点击点周围缩放。通过一个最小的QML示例展示了问题的再现步骤,并指出其行为与官方文档描述不符。作者的目标是实现当用户在矩形的任何位置进行鼠标滚轮/捏合操作时,内容能以鼠标位置为中心缩放。已将此问题报告给Qt,错误编号为QTBUG-40005,同时欢迎解决方案的建议。
摘要由CSDN通过智能技术生成

我正在尝试使用QML Scale Element来围绕用户点击的点执行视图缩放,但它并不总是按照记录的方式工作 .

要重现该问题,请运行下面的最小QML示例(我在Ubuntu 14.04 x86_64上使用Qt 5.3.1)然后:

单击左上方蓝色矩形的中心 .

看到所有内容都按比例放大,但蓝色矩形的中心仍保留在您的点击位置 . 这是http://doc.qt.io/qt-5/qml-qtquick-scale.html中记录的 - "[The origin] holds the point that the item is scaled from (that is, the point that stays fixed relative to the parent as the rest of the item grows)."

现在单击红色矩形的中心 .

看到所有内容都按比例放大,但红色矩形的中心确实保持在您的点击位置,它被向左和向左平移 . 这不是记录在案的 .

我的目标是让它正确地保持点击点作为原点,如文档中所述 .

附:有趣的是,如果您现在再次单击红色矩形的中心,它会按照承诺在该点附近放大 . 现在再次单击蓝色矩形的中心,您会看到相同的意外翻译行为 .

P.P.S.我正在开发一个应用程序,用户可以在包含矩形的任何地方鼠标滚轮/捏住,内部的所有内容都应该在鼠标/捏合位置周围向上或向下缩放 . 许多应用程序都有这种行为 . 参见例如inkscape .

import QtQuick 2.2

import QtQuick.Controls 1.1

ApplicationWindow {

visible: true

width: 640

h

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值