4

我有一个跨平台的 Qt 应用程序,它在 OSX 中遇到了一些麻烦。OSX 有一个我什至不知道存在的功能——“帮助”键。我的 MBP 没有,一年前购买的 Apple 有线键盘也没有。似乎这主要是较旧的 Mac 拥有的东西。显然,它会生成与 PC 键盘上的 Insert 键相同的扫描代码。

无论如何,当按下 Help 键时,我们的应用程序(或任何接收到 Help 键事件的应用程序)上的光标会变成一个小问号。这似乎是所谓的“上下文相关帮助模式”的一部分,如NSHelpManager 的 setContextHelpModeActive: 方法NSApplication 的 activateContextHelpMode: 方法文档中所述。从文档:

在此模式下,光标变为问号,用户单击的任何用户界面项目都会显示帮助。

大多数应用程序不使用此方法。相反,当用户按下帮助键时,应用程序会进入上下文相关模式。显示帮助窗口后,应用程序在第一个事件时退出上下文相关帮助模式。

有多少 Cocoa 开发人员真正了解这一点?我假设用这个问号光标单击应用程序中的某些东西应该会显示一条帮助消息,但我还没有找到一个 Cocoa 应用程序实际上它根本没有做任何事情 - 甚至 Apple 的应用程序也没有做任何事情. 事实上,它甚至似乎将很多应用程序置于启用光标文本选择的奇怪模式。

问题是,当我们在这种帮助问题光标模式下以编程方式在 Qt 中更改应用程序光标时,会发生不好的事情。具体来说,我们的应用程序实际上崩溃了。崩溃发生在 NSApplication 的 NSHelpManager 中的 Cocoa 深处。我想知道为什么我们会看到这种崩溃,但实际上我更感兴趣的是我们如何抑制这种“帮助”模式。Qt 或 Cocoa 中没有任何东西可以阻止它,除了可能拦截和压缩一个我还没有尝试过的事件。

有人知道更多吗?

4

0 回答 0