【问题标题】:Qt - Catch events normally handled by the Window ManagerQt - 捕捉通常由窗口管理器处理的事件
【发布时间】:2011-06-13 21:40:29
【问题描述】:

我不太清楚如何简洁地表达这个问题,所以如果有类似的问题,请指出正确的方向并关闭这个问题。

我目前正在构建一个 CAD 应用程序,用户主要通过鼠标和三个键盘修饰符(alt、shift、ctrl)在 3D 视口中进行交互。 Shift 和 Control 修改当前选择的工具选项,而 alt 操作相机 - 就像任何其他 3D CAD 应用程序一样。

但是我目前正在使用 Gnome 桌面进行开发,它的窗口管理器 (AFAIK) 会捕获任何 Alt-RightButton 鼠标拖动事件并将它们解释为窗口拖动命令 - 即使不按住标题栏并且无论当前突出显示的小部件。

这对我来说是一场灾难,因为相机键盘控制在我的目标行业中非常标准化。那么有没有人知道一种方法来覆盖这种行为,最好是在 Qt 中,并且最好将它集中在一个特定的小部件类中的一个场景中?

谢谢你,
凸轮

【问题讨论】:

标签: c++ qt keyboard-shortcuts window-management


【解决方案1】:

如果您在窗口上使用 Qt::X11BypassWindowManagerHint,则窗口管理器无法窃取您的按键。但是,这意味着您会丢失原生窗口框架(包括装饰、移动和调整大小),因此很可能您不想这样做

另一种方式:如果您的用户仅使用 1 或 2 种 Linux,请在安装程序中添加一些内容,询问用户是否要操作 gnome(或其他)键设置,如果是,请通过 gconftool 更改它们- 2(或同等学历)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-20
    • 2012-05-04
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 2019-04-03
    • 2014-05-17
    • 2011-02-03
    相关资源
    最近更新 更多