Qt5:在mouseMoveEvent中的update()之后不调用paintEvent

时间:2014-12-10 16:34:22

标签: qt paintevent

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

该应用程序工作正常,例如我可以正确渲染内容,滚动条可见, 我可以在scrollContentsBy等

期间手动更新视口

但是无论我在mouseMoveEvent中手动触发update()(或repaint())调用, 只有在"拖动"之后才会调用paintEvent。过程结束,例如激活了mouseReleaseEvent。

我一无所知为什么会这样。显然,如果我直接在内部进行更新 mouseMoveEvent,它将被QPainter拒绝(因为我无法在其中实例化QPainter mouseMoveEvent - Qt drop" paintEngine应该不再被调用"当试图这样做时。)

欢迎任何建议:) 谢谢,

1 个答案:

答案 0 :(得分:2)

嗯,跛脚我。永远不要混淆"更新()"使用" viewport() - > update()"