使用typedef绕过Qt中的坑

来源:互联网 发布:带制冰机的冰箱 知乎 编辑:程序博客网 时间:2024/06/05 06:03

Qt的核心技术信号槽的灵活使用相信大家都非常熟悉了,这里主要总结一下在信号槽中不能随意使用的地方以及如何使用typedef绕过这些坑。

函数指针作为槽函数的参数

槽函数的使用和普通的成员函数没有多大的区别,但是不能将函数指针作为槽函数的参数!比如:

private slots:void mySlot(int (*function)(char *p, int *n), bool b);

上述槽函数中使用了函数指针int (*function)(char *p, int *n)作为槽函数mySlot的第一个参数,这是不行的。如果非要使用函数指针作为参数应该如何通过编译呢?答案是使用typedef

typedef int (*function)(char *p, int *n) FUNCTION(char *p, int *n)...private slots:void mySlot(int FUNCTION(char *p, int *n), bool b);

模板类作为槽函数的参数

如果槽函数的参数含有模板类,即使编译的时候不报错,运行的时候也会产生错误。同样,使用typedef可以绕过:

typedef pair Pair;public slots:void mySlot(Pair myPair);
原创粉丝点击