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 类的全局事件捕获的主要内容,如果未能解决你的问题,请参考以下文章

js 基础 -- 循环函数调用 全局和局部变量异常捕获事件

AvaloniaUI:全局捕获鼠标按钮向上/向下

全局鼠标事件处理程序

JavaScript 全局事件机制

springboot捕获全局异常和配置多数据源

用于全局捕获媒体中心远程特殊键的 C# API