QTimer 与 QDragEvent 问题

发布于 2024-10-08 01:24:16 字数 443 浏览 5 评论 0原文

我有一个 GUI 应用程序,您可以在 QGraphicsView/Scene 中拖动小部件。您还可以在不拖动小部件时进行平移和缩放。

我想要什么: 我想做到这一点,以便当您拖动屏幕边缘附近的项目时,它开始朝该方向平移,并且即使鼠标没有移动也能保持平移,但鼠标仍然需要位于顶部/左/右或屏幕底部 10%。

我尝试过的: 在 DragMoveEvent 内部,我检查鼠标是否位于屏幕边缘。如果是这样,我会启动一个 15 毫秒超时的 Qtimer。超时时,会插入一个函数,通过更新中心来将场景平移到正确的方向。这种方法有效,但是当我将鼠标仍然放在边缘时,平移会不稳定,如果鼠标在边缘内移动,则平移会像应有的那样平滑。

底线: 当鼠标不移动时,为什么平移只会断断续续/滞后?如何修复它,以便平移像在边缘内移动鼠标时一样平滑?

I have a GUI application where you can drag widgets around in a QGraphicsView/Scene. You can also pan and zoom while you're not dragging a widget.

What I want:
I want to make it so that when you're dragging an item near the edge of the screen that it starts to pan in that direction and keeps panning even if the mouse isn't moving, but the mouse still needs to be in the top/left/right or bottom 10% of the screen.

What I've tried:
Inside the dragMoveEvent I check if the mouse is on the edge of the screen. If so I start a Qtimer with 15msec timeout. On timeout a function is slotted to pan the scene in the right direction by updating the center. This approach WORKS, BUT when i leave the mouse still on the edge the panning is choppy and if the mouse is moving around inside the edge then the panning is smooth as it should be.

Bottom Line:
Why is the panning only choppy/laggy when the mouse isn't moving? How do I fix it so that the panning is smooth like when you move the mouse around inside the edges?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

朦胧时间 2024-10-15 01:24:16

当您增加/减少超时时会发生什么?

What happens when you increase/decrease your timeout?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文