我有一个跨平台的Qt应用程序,在OSX中遇到了一些麻烦。 OSX有一个我甚至不知道存在的功能 - “帮助”键。我的MBP没有,我的Apple有线键盘也没有在一年前购买。似乎这主要是老款Mac的东西。显然它会生成与PC键盘上的Insert键相同的扫描码。
无论如何,当按下帮助键时,我们的应用程序(或任何接收帮助键事件的应用程序)上的光标变成一个小问号。这似乎是所谓的“上下文相关帮助模式”的一部分,如NSHelpManager's setContextHelpModeActive: method和NSApplication's activateContextHelpMode: method文档中所述。来自文档:
在此模式下,光标变为问号,并为用户点击的任何用户界面项显示帮助。
大多数应用程序不使用此方法。相反,应用程序进入 用户按下帮助键时的上下文相关模式。 应用程序在第一个事件时退出上下文相关帮助模式 显示帮助窗口后。
有多少Cocoa开发者真正了解这一点?我假设用这个问号光标点击应用程序中的某些东西应该做一些像提出帮助信息的东西,但我还没有找到一个Cocoa应用程序,它实际上做了什么 - 甚至Apple的应用程序都没有做任何事情。事实上,它甚至似乎将许多应用程序置于一个奇怪的模式,其中启用了光标文本选择。
问题是当我们处于这个help-question-cursor-mode时,当我们在Qt中以编程方式更改应用程序游标时,会发生不好的事情。具体来说,我们的应用程序实际崩溃。崩溃发生在NSApplication的NSHelpManager中的Cocoa内部。我想知道为什么我们看到这次崩溃,但实际上我对如何抑制这种“帮助”模式更感兴趣。 Qt或Cocoa中没有任何东西我可以看到它会阻止它,除了拦截和压制一个事件,我还没有尝试过。
有没有人对此有所了解?