在我的应用程序中,我需要在按下Alt
键时更改鼠标光标并执行一些不同的操作,并在释放Alt
键时恢复正常的光标和行为。
在Mac OS上一切正常,而在Windows上,Alt
键按下事件会将焦点移动到菜单栏(本地Windows行为),这导致我的光标更改意图出现了意外行为。
因此问题是:如何禁用这个Windows功能(当然要使用Qt进行编码),并始终将Alt
键按下事件传递给应用程序本身而不是菜单栏。
在我的应用程序中,我需要在按下Alt
键时更改鼠标光标并执行一些不同的操作,并在释放Alt
键时恢复正常的光标和行为。
在Mac OS上一切正常,而在Windows上,Alt
键按下事件会将焦点移动到菜单栏(本地Windows行为),这导致我的光标更改意图出现了意外行为。
因此问题是:如何禁用这个Windows功能(当然要使用Qt进行编码),并始终将Alt
键按下事件传递给应用程序本身而不是菜单栏。
SH_MenuBar_AltKeyNavigation 是一个与按下Alt键后菜单栏选择有关的样式提示。您需要继承QProxyStyle 并重写styleHint
方法,如下所示:
class MenuStyle : public QProxyStyle
{
public:
int styleHint(StyleHint stylehint, const QStyleOption *opt, const QWidget *widget, QStyleHintReturn *returnData) const
{
if (stylehint == QStyle::SH_MenuBar_AltKeyNavigation)
return 0;
return QProxyStyle::styleHint(stylehint, opt, widget, returnData);
}
};
QApplication a(argc, argv);
a.setStyle(new MenuStyle());