我有一个 GUI 应用程序,您可以在其中在 QGraphicsView/Scene 中拖动小部件。您还可以在不拖动小部件时进行平移和缩放。
我想要什么: 我想做到这一点,以便当您在屏幕边缘附近拖动一个项目时,它开始朝那个方向平移并继续平移,即使鼠标没有移动,但鼠标仍然需要位于屏幕的顶部/左侧/右侧或底部 10%。
我尝试过的: 在dragMoveEvent 中,我检查鼠标是否位于屏幕边缘。如果是这样,我会启动一个 15 毫秒超时的 Qtimer。在超时时,通过更新中心,将一个函数插入到正确的方向上平移场景。这种方法有效,但是当我将鼠标仍留在边缘时,平移会不稳定,如果鼠标在边缘内移动,则平移应该是平滑的。
底线: 为什么当鼠标不移动时平移只是不稳定/滞后?如何修复它以使平移像在边缘内移动鼠标一样平滑?