一、前言
有个界面需要重复使用某个自定义的控件,希望自定义控件能够像动态库文件那样,添加引用lib就能使用,经过多次太坑后,总结如下
二、实现方式
① 新建项目,选择"Qt Designer Custom Widget" 创建自定义控件
② 注意!!!!!!,创建的自定义控件里面没有自动添加 Q_DECL_EXPORT 宏,需要手动添加,此次困扰了我很久,导致生成的dll和lib不能被外部使用。
#ifdef TQSLIDER_SINGLE_LIB
# define TQSLIDER_SINGLE_EXPORT Q_DECL_EXPORT
#else
# define TQSLIDER_SINGLE_EXPORT Q_DECL_IMPORT
#endif
class TQSLIDER_SINGLE_EXPORT TQSlider_single : public QWidget
③ C/C++ → 预处理定义 中添加 大写的,带有lib后缀的名字,分号结尾。
④ 将编译生成的自定义控件放到主程序的对应文件夹中
比如:lib放到 主程序建立的lib文件夹
.h的头文件放到 include的文件夹
.dll 文件放到 .exe的同级目录下
⑤ 自定义控件的dll放到 designer 路径下,可以实现界面拖拽
⑥ VS链接lib及包含目录设置
⑦ 至此,可以在程序里面自由拖拽自定义控件了,而且能够编译和运行