moc的限制
1、模板类不能使用信号/槽机制
2、moc不扩展宏,所以信号和槽的定义不能使用宏, 包括connect的时候也不能用宏做信号和槽的名字以及参数
3、从多个类派生时,QObject派生类必须放在第一个, 因为moc是这么认为的…(比较流氓) 这也是我们前面的例子触犯的天条
4、函数指针不能作为信号或槽的参数, 因为其格式比较复杂,moc处理不了。 但可以用typedef把它定义成简单的形式再使用。(这招可真够绝的)
5、用枚举类型或typedef的类型做信号和槽的参数时,必须fully qualified。 这个词中文不知道怎么翻译才合适,简单的说就是, 如果是在类里定义的, 必须把类的路径或者命名空间的路径都加上, 防止出现混淆。 如Qt::Alignment之类的,前面的Qt就是Alignment的qualifier, 必须加上,而且有几级加几级。

QT moc存在一些限制,例如模板类无法使用信号/槽机制,信号和槽的定义及连接不能使用宏,QObject派生类必须首个继承,函数指针不能作为参数,枚举类型或typedef使用需全限定名,信号和槽不返回引用类型,以及signals和slots区域仅限定义信号和槽。这些限制虽有不便,但在实际编程中影响不大。
最低0.47元/天 解锁文章
1008

被折叠的 条评论
为什么被折叠?



