共计 2548 个字符,预计需要花费 7 分钟才能阅读完成。
Qt处理事件的第五种方式:”继承QApplication并重新实现notify()函数”。Qt调用QApplication来发送一个事件,重新实现notify()函数是在事件过滤器得到所有事件之前获得它们的唯一方法。事件过滤器使用更为便利。因为可以同时有多个事件过滤器。而notify()函数只有一个。
重新实现的QApplication类MyApplication的头文件myapplication.h如下:
myapplication.cpp文件如下:
mainwindow.h文件如下:
mainwindow.cpp文件如下:
main.cpp文件如下:
运行程序,可以发现button不管是点击、释放还是拖动鼠标,都不会显示任何文本。因为我们已经子类化QApplication,事件在到达QApplication的事件过滤器之前,会先到达QApplication的notify()函数,我们已经在子类化的MyApplication中屏蔽了MouseButtonPress、MouseButtonRelease事件。所以为MyApplication对象注册的事件过滤器不起作用。程序运行界面为:
正文完
请博主喝杯咖啡吧!
