关于Qt下switch.case 语句改写的有关问题,求大神们支招。

关于Qt下switch...case 语句改写的问题,求大神们支招。。
因为项目需要扩展功能,原先用以下形式写的语句太多了,想换种写法。
switch(TYPE)
{
    case TYPE1:
            emit signalTypeOne(TYPE);
             break;
    case TYPE2:
           emit signalTypeTwo(TYPE);
           break;
...
     default:
     break;
}

在网上查了查貌似有两种形式:函数指针或者State模式。
不过对于函数指针,Qt的signal貌似不能有函数指针。因为
typedef void (*fun_t)(int type);
typedef struct
{
    int type;
    fun_t fun;
}list_t;
 
static const list_t lists[] =
{
    {TYPE1, signalTypeOne},
   {TYPE2, signalTypeTow},
  ...
};
 
...

signal不能声明成类的静态函数,所以会报
argument of type 'void (main_form::)()' does not match 'void (*)(int)'
 的错误...
如果用state模式,我应该怎么设计呢?(感觉以上形式的代码不适用与state模式。。)
还有没有更好的或者更简单的方法呢?
------解决方案--------------------
看你的需求,如果只是用state模式,必然造成很多的状态类,所以再加上工厂模式,用于创建状态类。

------解决方案--------------------
这个说白了就是 TYPE 和 类的成员函数 的一对一对应,怎么跑出来的静态函数?

一个二维数组就搞定了。
------解决方案--------------------
signal 参数用 TYPE,slot 函数根据 TYPE 去数组找函数