这个问题在linux下没有但在wind下出现,
为了让控件类可通过dll导出给其它工程使用,即HexEditor类可供外部调用,这里要将HexEditor类添加导入导出标识,打开控件类的头文件HexEditor.h,先添加:
#include <QtUiPlugin/QDesignerExportWidget>
再为控件类HexEditor添加宏QDESIGNER_WIDGET_EXPORT,如下图:
说明:宏QDESIGNER_WIDGET_EXPORT,最终就是在类前添加了dllexport 或dllexport,以用于导入和导出该类。
动态库的添加方法
总结
1控件的版本一定要与编译Qt Creator的版本一致,不然编译的控件不会被Qt Creator识别,
2.一定要放Release版本的dll到Qt Creator的插件目录下,Debug版本的dll在Qt Creator的控件列表栏中也无法显示。
3.使用自定义控件时,当添加自定义控件的库时,一定要针对Debug版Release版本分别添加对应的库,不然在Debug中使用Release版的lib,dll时,编译时不会出错,但在运行时,会出现“QWidget: Must construct a QApplication before a QWidget” 的提示,并且程序无法成功运行。
4、自定义控件要生成Release的版本和Debug的版本,动态库放在lib文件夹下,源文件的lib文件夹中放.a文件,
5构成文件夹中直接放在.exe根文件下,编译时出错就应该在上一层目录放置。