Ribbon风格的应用程序一般存在如下操作方式: 在Ribbon程序的主界面中按下Alt键会在RibbonPage页面名称下方显示一个或多个字母, 表示继续点击这组字母可以显示该RibbonPage内的各个菜单项的键盘快捷键,进而通过按下键盘上的指定键位触发响应的Ribbon菜单项。如下图所示:
如果使用MFC编写Ribbon程序,可以在Visual Studio中轻松地指定RibbonPage按下Alt快捷键后显示的提示字母。然而项目使用Qt + Qtitan Ribbon库构建Ribbon程序,因此处理Alt键的相关问题就稍显麻烦了。
由于项目要求程序支持中文/英文切换,因此根据常规的Qt翻译机制做了翻译,然而发现程序在中文界面下,RibbonPage按下Alt键显示的是中文字符, 如下图所示:
虽然每一个RibbonPage都是一个QtitanRibbon::RibbonPage类对象,但是查阅QtitanRibbon库官方文档并未发现这个类对象有任何控制Alt键位提示的接口。最后发现Alt键位控制是由另一个Ribbon库类负责: QtitanRibbon::RibbonBar::setKeyTip(QAction *action, const QString &keyTip), 此接口的第一个参数就是RibbonPage::defaultAction(), 第二个参数就是你想自定义的按下Alt键后显示的字符串。
Ok, 使用RibbonBar的setKeyTip接口即可做出如上Excel的Alt控制效果了, 即: 中文RibbonPage名 + 自定义Alt键提示。