在我的应用程序中,一旦按下Alt
键,我需要更改鼠标光标并做一些不同的事情,并在释放Alt
键后返回正常光标和正常行为。
在Mac OS上,一切正常,而Alt
-pressing事件将焦点移至Windows上的菜单栏(Windows的 native 行为),这导致了我的光标更改期望的意外行为。
所以问题是:如何禁用此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());