Qt-捕获事件,通常由窗口管理器处理

问题描述

我不确定如何简洁地表达这个问题,因此,如果有类似的问题,请指出正确的方向并关闭该问题。 我目前正在构建一个CAD应用程序,用户主要通过鼠标和三个键盘修改器(alt,shift,ctrl)在3D视口中进行交互。 Shift和Control修改当前选择的工具选项,并alt操作相机-就像其他任何3D CAD应用程序一样。 但是,我目前正在使用Gnome桌面进行开发,并且它的窗口管理器(AFAIK)捕获任何Alt-RightButton鼠标拖动事件并将其解释为窗口拖动命令-即使不按住标题栏且无论当前突出显示的小部件。 这对我来说是一场灾难,因为相机键盘控件在我的目标行业中已经非常标准化。那么,有谁知道一种方法来覆盖这种行为,最好是从Qt内部进行,并且最好将其集中在一个特定的小部件类中,以用于我的一种情况? 谢谢, 凸轮     

解决方法

        如果您在窗口上使用Qt :: X11BypassWindowManagerHint,则窗口管理器无法窃取您的按键。但是,这意味着您会丢失本机窗口框架(包括装饰,移动和调整大小),因此您可能不想这样做。 另一种方法:如果您的用户仅使用1或2个Linux版本,则向安装程序中添加一些内容,询问用户是否要操纵gnome(或其他)键设置,如果是,则通过gconftool-2(或当量)。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...