我有一些问题。希望有人能帮助我。 我有一个Qwidget1和Qwidget2。 Qwidget1有一个小部件,可以升级到Qwidget2。 Qwidget1和Qwidget2都有paintEvent。我在Qwidget1的paint事件中写了“qDebug()<<”Update“;”。当我运行项目时,我看到一个单词“更新”已被打印很多次。那么为什么Qwidget1会多次执行绘制事件。我该如何修复它,只是在第一次显示Qwidget1时以及当我调用update时执行paint事件。
答案 0 :(得分:0)
这是预期的行为。你的代码就像应该的那样工作。从Qt文档:
绘制事件是重新绘制全部或部分窗口小部件的请求。它可以 发生的原因有以下几种:
调用了repaint()或update(),
小部件被遮挡,现在已被发现,
或许多其他原因。
答案 1 :(得分:0)
当窗口或其部件失效并且必须重新绘制时,可能存在任何数量的情况。这种情况包括但不限于:
当它发生时,Windows会将WM_PAINT
消息发送给应用程序。您可以检查收到的WM_PAINT
消息的数量是否与paintEvent
个呼叫的数量相匹配,但我怀疑Qt会增加任何重大开销。