QEventfilter 类的全局事件捕获
Posted
技术标签:
【中文标题】QEventfilter 类的全局事件捕获【英文标题】:global event catch for QEventfilter class 【发布时间】:2013-03-19 17:21:57 【问题描述】:我想为我的 Qt 应用程序添加一个帮助网页。用户可以使用 Qt::WhatsThis “工具提示”来获得关于主题的解释和网页的 URL。我用 Qt Designer 编辑 WhatsthisTooltips 并让它语言独立。
现在我创建一个用于过滤的“LinkFilter”类,将其安装在视图类中并对 QEvent::WhatsThisClicked 事件做出反应。这很好用。
现在我会在我的应用程序中捕获每个 QEvent::WhatsThisClicked,但是在每个对话框/视图/动作/小部件上安装它看起来真的很乱。这有某种全局事件处理程序,我可以安装我的“LinkEvent”类吗?必须有一个很好的 Qt 风格的方式来解决这个问题。
为了安装 EventFilter,我强烈关注了这个视频教程http://youtu.be/DHgbYxpZkbg
【问题讨论】:
【参考方案1】:http://qt-project.org/doc/qt-4.8/qapplication.html#notify
基本上你需要继承QApplication
并覆盖这个函数。然后,您可以检查它是否是您要查找的事件类型并采取相应措施。
【讨论】:
QApplication 类的提示非常好。我可以轻松地在应用程序类中安装该事件。现在它在不改变“正常”行为的情况下捕获每个信号。 QApplication qApplication(argc, argv); LinkFilter* filter = new LinkFilter(this); qApplication.installEventFilter(filter);以上是关于QEventfilter 类的全局事件捕获的主要内容,如果未能解决你的问题,请参考以下文章