1

我正在使用 QAbstractScrollArea + 自定义 QWidget 衍生小部件作为“the”小部件(覆盖了 sizeHint())。应用程序需要在 mouseMove 期间不断更新 QWidget 内容(有点拖动,但不完全是,它是一个在对象之间绘制线条的绘图工具,因此需要更改鼠标光标 + 需要动态绘制线条) .

该应用程序运行良好,例如我可以正确呈现内容,滚动条可见,我可以在 scrollContentsBy 期间手动更新视口等。

然而,无论我在 mouseMoveEvent 中手动触发 update()(或 repaint())调用,paintEvent 都只会在“拖动”过程结束后调用,例如 mouseReleaseEvent 被触发。

我不知道为什么会发生这种情况。显然,如果我直接在 mouseMoveEvent 中进行更新,它将被 QPainter 拒绝(因为我无法在 mouseMoveEvent 中实例化 QPainter - Qt 在尝试这样做时会丢弃“不再调用paintEngine”)。

欢迎任何建议:)谢谢,

4

1 回答 1

2

呸,跛我。永远不要将“update()”与“viewport()->update()”混为一谈

于 2014-12-10T17:19:44.320 回答