QT编译qtdesigner

当遇到QT Designer崩溃并需要编译源代码时,文章详细描述了在QT 4.7.4中编译designer.pro项目时遇到的常见问题和解决步骤。包括lib_pch.h和qdesigner_pch.h的缺失,moc_iconselector_p.cpp找不到IconSelectorPrivate声明的错误。解决方案涉及moc机制、Q_PRIVATE_SLOT的处理,以及vcprojx文件中排除moc文件的正确配置。此外,文章还揭示了一个导致qtdesigner崩溃的原因:配置文件gradients.xml加载错误,删除或替换此文件可解决问题。
摘要由CSDN通过智能技术生成

最近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,需要在该实现文件

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值