Qt Creator无法显示自定义控件

这几天尝试做一下Qt的自定义控件,中间遇到问题就是自定义控件在QtCreator上无法显示,经过查资料和验证,将问题解决了,简单记录一下。

关键词:Qt库版本 Qt Creator所使用的Qt库版本

Qt使用自定义控件有两种方式:
①通过控件“提升”,这个方法比较推荐,方便快捷。在这里不展开了;
②通过插件的方式,本文记录的就是这样的方式。就是把控件做成插件,并且可以在Qt Creator的界面设计器上直接拖拽调用,很炫酷。为什么要采用这样的方式?其中一个原因看起来很专业和高大上啊。

但我在这过程中遇到问题,做出来的控件在qt库自带的qt designer中可以看到,不过在qt creator中的界面设计器就看不到,为啥?因为版本不一致的问题。

1. 我的环境

编译器:MSVC 2015社区版
http://download.microsoft.com/download/B/4/8/B4870509-05CB-447C-878F-2F80E4CB464C/vs2015.com_chs.iso
Qt安装包:qt-opensource-windows-x86-msvc2015_64-5.8.0.exe(http://download.qt.io/new_archive/qt/5.8/5.8.0/qt-opensource-windows-x86-msvc2015_64-5.8.0.exe

2. 版本对比

从文件名字就可以看qt库的版本:
Qt Creator无法显示自定义控件

安装好之后,看看qt creator的版本:Qt Creator无法显示自定义控件
所以版本不一致!
我安装的Qt安装包是64位的库+32位的Qt Creator,因此直接这么编译出来的自定义控件是无法在Qt Creator上显示的。

那怎么办?换Qt Creator的版本。

3. 编译Qt Creator

在地址(http://download.qt.io/archive/qtcreator/4.2/4.2.1/qt-creator-opensource-src-4.2.1.tar.xz)上下载Qt Creator的源码包,然后就用我们之前装好的qt-opensource-windows-x86-msvc2015_64-5.8.0.exe这个环境编译。
编译过程略去,不会太难,记得编译Release版哦。得到新的Qt Creator版本,如下:
Qt Creator无法显示自定义控件
好了,现在Qt库和新的Qt Creator版本一致了。(废话,新的Qt Creator就是用之前安装好的qt环境编译出来的,肯定一致啦)。

4. 测试验证

验证一下,直接用Qt自带的插件例子AnalogClock。(我还是用旧的32位那个Qt Creator。)
Qt Creator无法显示自定义控件
记得编译为Release版哦。Qt Creator无法显示自定义控件

编译出来得到.lib,.dll文件
Qt Creator无法显示自定义控件

把dll文件拷贝到Qt库的插件目录***意:查一些网上资料,说要拷到Qt Creator的bin/plugins/designer,这里我是拷在Qt的安装目录,大家可以试试。
Qt Creator无法显示自定义控件

完工,看效果。打开新版Qt Creator,看到了,AnalogClock控件出现在面板上了。
Qt Creator无法显示自定义控件
可以拖拽:
Qt Creator无法显示自定义控件

好了,Qt自定义控件在Qt Creator上显示的工作完毕。

小结

总结一下,关键的地方是,编译插件的Qt库版本和编译Qt Creator用的Qt库版本要一致,那么就可以显示自定义控件了。

在做这个小测试的过程中,查了挺多网上的资料,不一一列出了,在此表示感谢。另外,如果文中有错漏,烦请大家指出,谢谢。