870920 Menu

KeyMappingEditorComponent

本小节内容主要涉及KeyMappingEditorComponent和KeyPressMappingSet这两个类。

KeyMappingEdit

图 KeyMappingEditorComponent快捷键编辑对话框

KeyMappingEditorComponent快捷键编辑对话框用于查看、修改当前注册到命令管理器中的所有命令项,并可为某条命令添加新的快捷键。其使用同其他基本控件,唯一特殊之处在于其构造函数需两个参数,1参为KeyPressMappingSet快捷键映射集合类的引用型对象,2参为是否显示【reset to default】(重置为默认)按钮。

程序命令管理器对象调用getKeyMappings()函数后,返回值为本程序的KeyPressMappingSet快捷键映射集合类的指针,对返回值进行解引用,即可得到对象实体:*(command->getKeyMappings()),该对象可作为快捷键编辑对话框的构造1参。同时,可利用该对象读写本程序的所有快捷键信息。

KeyMappingEditorComponent快捷键编辑组件将自动显示程序命令管理器中所有已注册的命令,包括未分配快捷键的命令。快捷键可以是单键,也可以是组合键。在本组件中可为某个命令增加新的快捷键,即一条命令可有多个快捷键,也可以替换或移除已分配的快捷键。默认,快捷键编辑组件的字体显示与操作模式不太尽人意,可派生KeyMappingEditorComponent的子类,实现所需。此时,可根据需要重写该类的虚函数。

实现程序快捷键的编辑和内部保存,关键是KeyPressMappingSet快捷键映射集合类,该类是一个数据容器,其构造参数即ApplicationCommandManager对象,而本类对象则是命令管理器类的数据成员之一。通常,无需直接创建KeyPressMappingSet对象,而是用ApplicationCommandManager::
getKeyMappings()返回该类的指针,而后串联该类的成员函数。
KeyPressMappingSet最有用的功能是:可将用户自定义的所有快捷键信息保存为XmlElement对象,或者从XmlElement对象中恢复先前保存的快捷键信息。这一点,可用于程序启动时加载各类系统设置与用户自定义设置,以实现每次启动后,本程序所有命令的快捷键自动设置为用户先前自定义的快捷键,同时,由于程序命令管理器ApplicationCommandManager的对象在每次启动程序时均需注册ApplicationCommandTarget,因此,编程时预置的快捷键依然可用,也可以将用户的自定义快捷键重置为程序默认的快捷键,这些都是KeyPressMappingSet类的功能,调用其对应的成员函数即可。

实现上述功能的示例代码:(略)