最近QT-designer不知道为啥所有电脑上的qt-designer都崩溃,没办法只能调试源代码,于是在qt4.7.4的源代码tools下,打开designer.pro,将其加载为QT的VS项目,编译designer发现报好多问题,简单的问题我就不多说了,几个比较简单的问题有:
1.找不到lib_pch.h,找不到lib_pch.cpp,配置C/C++的include即可
2.找不到qdesigner_pch.h,解决方法上同
3.moc_iconselector_p.cpp文件编译的时候找不到 IconSelectorPrivate,也就是d_func()->slotStateActivated()等等都找不到声明
大家都知道C++编译的时候,肯定要找到类型的声明部分,但是要编译moc_iconselector_p.cpp那就要增加声明啊,但是大家想想
QT使用的都是Impl技术,也就是私有化内部实现,咱们是不可能加iconselector.cpp的,这样就没法编译了。(相互依赖啊)。
解决方案:
1.QT对特定的关键字处理不一样,对于头文件中Q_OBJECT的会采用moc机制来生成QMetaObject对象
2.对于Q_PRIVATE_SLOT() 其实并不是起到宏定义的作用,只是预留,留给moc来进行处理,对于Q_PRIVATE_SLOTS这种特殊的情况其生成的moc文件不能单独参与编译
(如果要编译,也就意味着需要include 私有类的定义)
3.正确的做法是如果遇到Q_PRIVATE_SLOT,需要在该实现文件