有一种“简单”的方法可以为我的Qt4应用添加可自定义的键盘快捷键吗?

时间:2009-12-26 16:02:40

标签: qt keyboard-shortcuts customization

我有一个相当大的Qt应用程序,自Qt 3天以来一直在开发中,它现在包含数十个窗口,包含数千个菜单项,控件和其他用户可启动的操作。它目前在Qt 4.6下编译,适用于Linux,MacOS / X和Windows。

来自high的新功能请求是用户应该能够自定义此应用程序中的任何和所有键盘快捷键...即应该有一个“Customize Key Bindings ...”菜单项,选择后,打开一个对话框,列出应用程序中的所有操作及其当前的键绑定(如果有),并允许用户为他关心的任何和所有操作分配或更改键绑定,然后保存其设置并使用应用程序用他自己定制的键绑定。

考虑到应用程序中键盘操作的数量,这似乎是一个相当雄心勃勃的事情,我想知道是否有任何现有的类或代码库可用于协助此类事情,或者如果这是我自己必须从头开始实施的东西。特别是,Qt国际化系统看起来似乎可能适用于这样的事情 - 不同之处在于开发人员在发布应用程序之前选择关键组合而不是(实际上除此之外),用户可以选择/改变使用应用程序时的键组合(当然,如果他们对发货的默认值不满意)。

是否有人对实现此功能的代码或方法有任何提示或指示?

3 个答案:

答案 0 :(得分:2)

我同意JimDaniel的观点,听起来最通用的方法是为您通过键盘快捷键执行的所有操作创建QAction。然后,用户为每个操作配置适当的快捷方式。

这绝对是一种更简洁的方式来实现这一点,而不是覆盖事件,它还允许您将您的操作放入菜单和工具栏中,我不知道这将为您的应用程序做多少工作。

答案 1 :(得分:0)

您可以将绑定存储在应用程序配置文件中,并在应用启动时读取它。然后,每当用户更改绑定时,都会更新此文件。密钥只是Qt框架中的枚举。您可以覆盖相应的keyPressEvent()或keyReleaseEvent(),检查按下的键并匹配当前绑定。

答案 2 :(得分:0)

以下是我在此主题之前发现的内容:

http://doc.qt.nokia.com/qq/qq14-actioneditor.html

这是在Qt3,但我想可以在Qt4中编写