qt show hide repaint update paintEvent

qt组件中,show hide控制了一个开关(可能是bool类型的值),这个开关会控制repaint和update是否要发出paintEvent事件。估计内部会调用repaint和update函数。
repaint 和update函数 用于发出paintevent事件。区别有一个描述在这里
这两个函数都在内部有内调用
如update在窗体生效(聚焦)和失效(失焦) 或者在窗体resize等操作时会被调用到。
repaint在各种按键或者鼠标按钮的时候会调用。

paintEvent 一般只在事件循环中调用,最高不要手动显示调用paintEvent,可以通过调用repint函数进行。
真正的绘制操作是在paintEvent中,自定义的绘制操作也需要放到这里面要不然会被冲刷掉。

那么子窗体的update在什么地方会出现呢:

现在注意到的有以下几种情况:

1、主窗体或父窗体突然生效(聚焦)和失效(失焦),也就是变成当前操作窗口与否。可以看到父窗体响应事件后会递归的向所有子窗体传递该事件

qt show hide repaint update paintEvent

2、父窗体中有进行resize(这个无法断点到,但是没有走到repaint中)
3、鼠标移动到对应的子控件上时(这里应该是响应了hover事件后导致的)。