[Interest] smoothest way to zoom/pan QGraphicsView?
Patrick Stinson
patrickkidd at gmail.com
Fri Apr 7 06:22:29 CEST 2017
OK, thanks for the feedback. A profile showed that it was my code after all and setTransform is indeed plenty fast. However calls to setTransform definitely need to be coalesced on a timer or it lags behind.
Thanks!
> On Apr 6, 2017, at 8:40 PM, Ch'Gans <chgans at gna.org> wrote:
>
> On 7 April 2017 at 15:02, Patrick Stinson <patrickkidd at gmail.com <mailto:patrickkidd at gmail.com>> wrote:
>>
>>> On Apr 6, 2017, at 7:57 PM, Ch'Gans <chgans at gna.org> wrote:
>>>
>>> On 7 April 2017 at 14:38, Patrick Stinson <patrickkidd at gmail.com> wrote:
>>>> I am implementing a pan and zoom on pinch via raw touch events and am finding setTransform() to be very slow, even with an empty scene. The touch events are backed up in a queue by slow synchronous calls to QGraphicsView.setTransform().
>>>
>>> If it's slow with an empty scene, then you have a problem that has
>>> nothing to do with QTransform. Maybe you have a cascade of events that
>>> bounce on each other until it stabilise...
>>> Maybe your synchronous calls are too frequent. I would advise to use
>>> the animation framework to do this sort of things.
>>
>> This is possible. I will check further.
>>
>>>
>>> Whats your environment, which HW, which OS, which Qt, …
>>
>> I am using Qt-5.8.1 and PyQt-5.8.1, latest sierra with latest MacBook pro
>>
>>>
>>>>
>>>> Without stripping down my code into a runnable example, is setTransform considered to be too slow for 60Hz frame-rate updates from touch events? If so, is there a better way to smoothly zoom and pan the graphics view?
>>>
>>> Use the animation framework. no need for a queue mechanism, should
>>> work without any problems unless you hardware is not powerful enough.
>>>
>>
>> How would one animate the transform without a "transform" property? Or am I missing something? (I’ve been away from qt for a while - since before the animation framework)
>>
>
> I didn't say w/o a "transform" property, i said w/o a queue. My point
> is that using the animation framework will likely be easier and gives
> smoother result than using QTimer and a "command queue".
> BTW, you cannot animate the "transform" property without providing
> your own interpolation function.
> But you can work around that by animating scale factor and translation.
>
> PS: I've just found this
> https://wiki.qt.io/Smooth_Zoom_In_QGraphicsView <https://wiki.qt.io/Smooth_Zoom_In_QGraphicsView>, haven't tried it, but
> this might help you in your quest.
>
> Chris
>
>>
>>> Chris
>>>
>>>>
>>>> Thanks!
>>>> -P
>>>> _______________________________________________
>>>> Interest mailing list
>>>> Interest at qt-project.org <mailto:Interest at qt-project.org>
>>>> http://lists.qt-project.org/mailman/listinfo/interest <http://lists.qt-project.org/mailman/listinfo/interest>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20170406/395aa1b5/attachment.html>
More information about the Interest
mailing list