保留现场

手动执行update()或者repaint()都不能执行paintEvent函数。

探究原因

如果是代码new出来的控件,检查是否正确显示,比如有没有加入到layout中。或者有没有设置父窗口(可能被其他空间遮挡)。

检查控件width或者height大小是否不为 0。如果为 0,也不会出出发paintEvent

解决方法

参考 QT 在构造函数中写的控件不显示