在 mouseMoveEvent 中 update() 后不会调用paintEvent

问题描述 投票:0回答:1

我使用 QAbstractScrollArea 和自定义 QWidget 衍生小部件作为“the”小部件 (覆盖

sizeHint()
)。

应用程序需要在

mouseMove
期间不断更新QWidget内容(有点像 拖动,但不完全是,它是一种绘图工具,用于在对象之间绘制线条,因此鼠标 光标需要改变并且线条需要动态绘制)。

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

scrollContentsBy
等期间手动更新视口

但是,无论我在

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

我不知道为什么会发生这种情况。显然,如果我直接在

mouseMoveEvent
,它将被 QPainter 拒绝(因为我无法在其中实例化 QPainter)
mouseMoveEvent
— 当尝试执行此操作时,Qt 会丢弃“paintEngine 不应再被调用”)。

qt qt5 qpainter paintevent qmouseevent
1个回答
2
投票
切勿将

update()

viewport()->update()
 混合。

© www.soinside.com 2019 - 2024. All rights reserved.