Qt QMainWindow忽略单击,将其传递到后台窗口

Qt QMainWindow忽略单击,将其传递到后台窗口,qt,Qt,我想创建一个半透明的信息窗口,不妨碍用户的其他活动。在窗口上的任何点击都应该像窗口不存在一样通过 您建议如何实施这种行为?有没有一个简单的方法可以做到这一点,还是我必须遵循一个笨拙的变通方法?我正在考虑隐藏窗口,重新执行单击,然后使窗口再次可见。但这仍然会破坏拖放手势。看看枚举值:Qt::WA_TransparentForMouseEvents: 启用时,此属性将禁用将鼠标事件传递到 小部件及其子部件。将鼠标事件传递给其他用户 小部件,就好像小部件及其子部件不存在于 小部件层次结构;鼠标点击和其

我想创建一个半透明的信息窗口,不妨碍用户的其他活动。在窗口上的任何点击都应该像窗口不存在一样通过


您建议如何实施这种行为?有没有一个简单的方法可以做到这一点,还是我必须遵循一个笨拙的变通方法?我正在考虑隐藏窗口,重新执行单击,然后使窗口再次可见。但这仍然会破坏拖放手势。

看看枚举值:
Qt::WA_TransparentForMouseEvents

启用时,此属性将禁用将鼠标事件传递到 小部件及其子部件。将鼠标事件传递给其他用户 小部件,就好像小部件及其子部件不存在于 小部件层次结构;鼠标点击和其他事件有效地“传递” 通过“他们”。默认情况下禁用此属性


我对“鼠标事件透明度”(不知道确切的术语)做了更多的研究,我发现

我不认为有一个通用和简单的方法来解决你的问题。您可能需要深入研究本机API。一旦事件到达一个应用程序,它们不会单独转发到其他应用程序


你们觉得怎么样?我注定要使用每个操作系统的本机API吗?

?我可能错了,但它似乎不适用于windows。@Pieter您希望您的单击通过半透明信息窗口传递到属于同一个或另一个应用程序的另一个窗口吗?@Pieter这里重要的是,据我所知,您对半透明信息窗口的单击具有当且仅当另一个窗口属于同一个Qt应用程序时,该窗口才会接收到WA_transparentForMouseeEvents属性。我检查了Qt源代码,提到的属性会影响
QWidget*QApplication::widgetAt(const QPoint&point)[static]
的行为,该属性在内部用于决定应用程序的哪个窗口获得鼠标事件。当。。。那么我想这个解决方案对我不起作用。我需要我的鼠标事件通过窗口,无论它后面是什么。在这种情况下,我认为QtaPI本身不能帮助您解决这个问题。您需要使用每个操作系统的本机API。(我可以帮助您使用win32。您可以通过
WId QWidget::effectiveWinId()const
获取窗口小部件的窗口系统标识符(HWND)。然后您可以通过该函数设置
WS_EX_NOACTIVATE
。)您是否实现过此功能?我正试图实现同样的目标。