开发者社区> 问答> 正文

Qt5工程中添加Qt4的控件报错: QWidget: Must construc?报错

用VS新建了Qt5工程, 其中有个 .ui 文件, 用Qt Designer打开这个文件, 拖入用Qt4编写的控件(这个控件是人家写好的)后保存, 编译Qt5工程, 启动时报错:

其中的红框里的类是Qt4的控件, 执行到第48行时报这个错. 该怎么解决啊???

展开
收起
爱吃鱼的程序员 2020-06-10 14:20:48 1063 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    引用来自“jorneyr”的评论

    所有QWidget的对象都要在QApplication对象创建后才能创建

    回复 @jorneyr:哦,但是把Qt4控件的Dll文件,复制到Qt5的相应目录(比如C:\Qt\Qt5.5.1_32Bit_VS2010\5.5\msvc2010\plugins\designer),结果Qt5的Designer不加载呢?见下图那样:Widget上Qt4和Qt5没有任何区别,唯一不同的是在.pro文件里引用的模块名不一样qt5不兼容qt4吧,把那个控件用Qt5重新编译一遍
    看这个错误提示,就好像是这个控件不认识Qt5的QApplication,只认识Qt4的QApplication.如果有办法解决那是最好了.我也好想这样的,但是拿不到控件的源码,是人家写的.

    所有QWidget的对象都要在QApplication对象创建后才能创建

    引用来自“jorneyr”的评论

    所有QWidget的对象都要在QApplication对象创建后才能创建

    把Qt4控件的Dll文件,复制到Qt5的相应目录(比如C:\Qt\Qt5.5.1_32Bit_VS2010\5.5\msvc2010\plugins\designer),结果Qt5的Designer不加载,提示验证数据不匹配,不知具体是哪里不匹配呢??但是复制到Qt4的对应目录,则会在Qt4的Designer的WidgetBox里添加控件成功.问题是不是就出在这里啊??如果Qt5成功加载Qt4的控件, 就可以在Qt5里使用Qt4的控件,对不??

    回复 @jorneyr:哦,好吧,谢谢.看来还得用Qt5编译,才能在Qt5中使用.DLL不通用,代码通用,ABI与API的关系
    2020-06-10 14:21:03
    赞同 展开评论 打赏
问答分类:
C++
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载