天天看点

PyQt学习遇到的问题:重写notify发送的消息为什么首先给了一个QWindow对象?

在pyqt开发图形界面应用时,从qapplication派生的子类重写notify方法后(具体请参考《​​pyqt学习随笔:通过自定义类重写qapplication的notify方法捕获应用的所有消息​​》),在事件处理跟踪时,发现所有消息都是先发给一个qwindow对象,但在应用中并没有定义这样的对象。例如应用中重写notify方法如下:

在界面上点击一个按钮时,截获如下输出:

可以看到notify发送的消息包括两条,第一条是给qwindow 对象发送,第二条是给qpushbutton 发送。其他消息也是一样,但qwindow 对象在应用中并没有定义。

经查阅相关资料,该qwindow 对象是pyqt程序创建的一个隐式的窗口,所有发给gui的消息先发给该隐式窗口,再进行分发。

具体大家可以参考《​​qt 消息处理机制深入分析 (qt消息机制与window程序消息的对比)​​》相关的说明。

​​​​​​