我正在使用 QAbstractScrollArea + 自定义 QWidget 衍生小部件作为“the”小部件(覆盖了 sizeHint())。应用程序需要在 mouseMove 期间不断更新 QWidget 内容(有点拖动,但不完全是,它是一个在对象之间绘制线条的绘图工具,因此需要更改鼠标光标 + 需要动态绘制线条) .
该应用程序运行良好,例如我可以正确呈现内容,滚动条可见,我可以在 scrollContentsBy 期间手动更新视口等。
然而,无论我在 mouseMoveEvent 中手动触发 update()(或 repaint())调用,paintEvent 都只会在“拖动”过程结束后调用,例如 mouseReleaseEvent 被触发。
我不知道为什么会发生这种情况。显然,如果我直接在 mouseMoveEvent 中进行更新,它将被 QPainter 拒绝(因为我无法在 mouseMoveEvent 中实例化 QPainter - Qt 在尝试这样做时会丢弃“不再调用paintEngine”)。
欢迎任何建议:)谢谢,