Qt5开发自定义控件中遇到的问题

由于Qt可以开发自定义控件,能够设计出更漂亮的UI,所以打算学习开发自己的控件,但学习过程中遇到很多问题,经历了各种挫折终于了解了定义控件的开发过程。
我的开发环境:qt-msvc2015-5.7.1(Qt-MSVC-32位,Qt Creator也是MSVC-32位的)
一、新建Qt4设计师自定义控件工程

具体参考:http://www.2cto.com/kf/201607/527857.html
http://blog.csdn.net/giselite/article/details/12622429
2.编译调试
首先执行qmake,然后在release模式下编译,编译完成后默认会在release文件夹下会生成一个.dll和.lib文件。
3.使用测试
分别将生成的.dll文件复制到D:\Qt\Qt5.7.1\5.7\msvc2015\plugins\designer和D:\Qt\Qt5.7.1\Tools\QtCreator\bin\plugins\designer目录下以保证在designer和qtcreator都能显示自定义的控件。生成自定义控件使用的是QT5.7.1 for VS2015,使用自定义控件项目使用的是QT5.7.1 for MinGW或者 for VS2015。这个两个都测试过。都可以使用。并且看到自定义属性。
开发过程中主要遇到的问题:
qtcreator创建的自定义控件使用mingw(qt-mingw530-5.7.1)编译后能在designer中显示但在qtcreator中加载失败。
解决办法:
(1)官网提供的Qt Creator版本基本上是MSVC版本,如果需要在mingw的Qt库对应的Qt Creator中集成自定义控件,需要自己用对应的Qt库编译Qt Creator源码。
(2)由于QtCreator是基于MSVC编译,所以需要将工程在MSVC上编译。所以在MSVC2015的Qt库的qtcreator中用MSVC2015进行编译。
Qt自定义插件注意事项:

1:每个Qt库bin目录的designer可执行文件都是和该库同一个编译器编译的,可用,如果想要集成到Qt Creator中,则需要注意版本,一般在windows上的Qt Creator版本是MSVC的,则需要对应的Qt库也是MSVC编译的,库版本和编译器版本必须保持一致才能是顺利集成到Qt Creator的重要前提。

2:自定义控件的名称不能小写,否则拖过去的控件自动生成的默认名称和类名一样,会编译通不过。这个问题坑了我很久,造成自动生成的UI代码保存,一直没有怀疑,后面才发现自动生成的代码类名和实例名称一样,冲突导致的。

3:如果将生成好的dll文件放到Qt库目录下的 plugins\designer 下,可以在 designer 中看到。放到Qt Creator下的 bin\plugins\designer 则可以集成到Qt Creator中。

4:将自定义控件的头文件、dll文件、lib(mingw编译器为.a)文件复制出来,放到include(可自己随便命名,我这里习惯用include)目录,将include目录放到项目的源码文件下,在使用了自定义控件的项目的pro文件中。增加两行 INCLUDEPATH +=

PWD/includeLIBS+=
PWD/include/ *.lib(mingw编译器为.a) ,这样可以正常编译,但是编译完成后不能运行,还需要将对应自定义控件的dll文件复制到可执行文件同一目录即可,至此大功告成。

番外话:大部分文章介绍都是将对应的库文件和头文件放到Qt安装目录对应文件夹下,为什么这里要放到一个include目录,随着项目一起呢?个人是这么理解的,随项目一起,每次都可以很方便的将运行库文件复制到可执行文件同一目录,而不会忘记从Qt库对应目录找该运行库。而且发布代码的时候也可以有个很好的参考。

期间参考了以下博客:
http://www.cnblogs.com/feiyangqingyun/p/6182320.html
http://blog.csdn.net/ubiter/article/details/12757817
http://blog.csdn.net/zhuxiaowei716/article/details/26063797

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值