2011-06-13 131 views
1

我不确定如何简明地描述问题,因此如果有类似的问题,请指向正确的方向并关闭此问题。Qt - 通常由窗口管理器处理的捕获事件

我目前正在构建一个CAD应用程序,用户主要通过鼠标和三个键盘修改器(alt,shift,ctrl)在3D视口内进行交互。 Shift和Control可以修改当前选择的工具选项,并且可以操作相机 - 与其他3D CAD应用程序非常相似。

但是,我目前正在开发一个Gnome桌面,它的窗口管理器(AFAIK)捕获任何Alt-RightButton鼠标拖动事件并将它们解释为一个窗口拖动命令 - 即使没有按住标题栏也不管当前高亮部件

这对我来说是一场灾难,因为我的目标行业相机键盘控制相当标准化。那么有没有人知道重写这种行为的方式,最好是在Qt中,最好把它集中在我的一个场景中的一个特定的widget类中?

谢谢
凸轮

+0

这不仅仅是你。 Inkscape有一个常见问题解答项目,对于基于应用程序的解决方案来说这不是一个好兆头。 http://wiki.inkscape.org/wiki/index.php/FAQ#How_to_make_Alt.2Bclick_and_Alt.2Bdrag_work_on_Linux.3F – 2011-06-13 21:55:40

回答

1

如果使用了Qt :: X11BypassWindowManagerHint的窗口,那么窗口管理器不能偷你的按键。但是,这意味着你失去了原生窗口框架(包括装饰,移动和调整大小),因此您可能不想这样做。另一种方法:如果你的用户只在1或2个Linux版本上,向安装程序添加一些内容,询问用户是否要操纵gnome(或其他)密钥设置,如果是,则通过gconftool进行更改-2(或等同)。