一个关于如何利用C++设计模式的问题
问题描述:
我有个菜单界面,如下
0001-属性配置
0002-菜单管理
0003-交易开发配置,
要求双击每个菜单名时,能弹出相应的界面,且能方便扩展。
双击时,只能获取到菜单的文字信息串,也就是这些"0001-属性配置","0002-菜单管理","0003-交易开发配置",其中每个菜单名对应的画面为一个class,比如0001对应的class为F0001,0002对应的class为F0002,
而F0001,F0002,F0003这些类都继承BaseForm类。
现在假如我双击调用的事件为 PopTrade(const QString& MenuId),我是这样实现的,
先定义一个QMap<Qstring, BaseForm*> InterfaceMap,初始化时,将菜单ID与相应的类进行关联:
InterfaceMap.insert("0001", new F0001);
InterfaceMap.insert("0002", new F0002);
InterfaceMap.insert("0003", new F0003);
BaseForm *PForm = InterfaceMap.find(MenuId).value(); //找到MenuId对应的class
PForm->exec(); //exec()为显示相应的菜单界面