Qt之新建界面动态库并使用
动态库的创建


//SharedLib_global.h
#ifndef SHAREDLIB_GLOBAL_H
#define SHAREDLIB_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(SHAREDLIB_LIBRARY)
# define SHAREDLIB_EXPORT Q_DECL_EXPORT
#else
# define SHAREDLIB_EXPORT Q_DECL_IMPORT
#endif
#endif // SHAREDLIB_GLOBAL_H
//SharedLib.h
#ifndef SHAREDLIB_H
#define SHAREDLIB_H
#include "SharedLib_global.h"
class SHAREDLIB_EXPORT SharedLib
{
public:
SharedLib();
};
#endif // SHAREDLIB_H
//SharedLib.cpp
#include "sharedlib.h"
SharedLib::SharedLib()
{
}
以上就可以新建一个没有界面的动态库,如果想封装含有UI的动态库,接着看
添加界面类,类名和上面的一模一样,都是SharedLib。

进行覆盖原文件


//原来的SharedLib.cpp
#ifndef SHAREDLIB_H
#define SHAREDLIB_H
#include <QWidget>
namespace Ui {
class SharedLib;
}
class SharedLib : public QWidget
{
Q_OBJECT
public:
explicit SharedLib(QWidget *parent = nullptr);
~SharedLib();
private:
Ui::SharedLib *ui;
};
#endif // SHAREDLIB_H
增加库的导进导出

修改UI进行测试

点击小锤子进行编译库,不能点击运行,因为只是单纯库,还不能独立运行。

进入构建目录就可以看到生成的库文件了。

动态库的使用
新建Demo进行测试



选择lib文件

win32: LIBS += -L$$PWD/../build-SharedLib-Desktop_Qt_5_14_1_MSVC2017_64bit-Debug/debug/ -lSharedLib
INCLUDEPATH += $$PWD/../build-SharedLib-Desktop_Qt_5_14_1_MSVC2017_64bit-Debug/debug
DEPENDPATH += $$PWD/../build-SharedLib-Desktop_Qt_5_14_1_MSVC2017_64bit-Debug/debug
把库文件的两个头文件复制在项目目录并添加到项目工程

修改sharedlib.h的头文件,只保留public部分。
//SharedLib.h
#ifndef SHAREDLIB_H
#define SHAREDLIB_H
#include <QWidget>
#include "SharedLib_global.h"
class SHAREDLIB_EXPORT SharedLib : public QWidget
{
public:
explicit SharedLib(QWidget *parent = nullptr);
~SharedLib();
};
#endif // SHAREDLIB_H
效果如下:

Qt之新建界面动态库并使用的更多相关文章
- Qt生成和调用动态库dll,和静态库.a(windows和linux通用)
系统1:ThinkPad T570.Windows10.QT5.12.2(Qt Creater 4.8.2)一.动态库.dll的创建和调用1.在qtcreater中按如下步骤创建动态库,动态库名为my ...
- electron调用c#动态库
electron调用c#动态库 新建C#动态库 方法要以异步任务的方式,可以直接包装,也可以写成天然异步 代码如下 public class Class1 { public async Task< ...
- Qt——动态库的创建和使用
一.动态库是什么 很多人写程序的人都见过.lib和.dll文件,对动态库也略有耳闻. 生成动态库后可以得到两个文件,后缀名分别是.lib以及.dll. 简而言之,.lib称为导入库,相当于头文件:.d ...
- 6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作
一 QT的内存管理 1 QT中的内存管理是QObject来管理的 2 QT中的内存管理没有cocos2dx中的引用计数 3 组件能够指定父对象 QTimer *timer = QTime ...
- Qt编写自定义控件插件开放动态库dll使用(永久免费)
这套控件陆陆续续完善了四年多,目前共133个控件,除了十几个控件参考网友开源的代码写的,其余全部原创,在发布之初就有打算将动态库开放出来永久免费使用,在控件比较完善的今天抽了半天时间编译了多个qt版本 ...
- 【xcode】qt程序不通过qmake,运行找不到动态库的坑
现象:试图在一个已有项目里增加qt的代码,因此手动加入相关framework(未通过qmake生成工程),编译连接都通过,但是运行时崩溃,提示错误: dyld: Library not loaded ...
- Linux Qt动态库的创建和使用
一.创建动态库 编写一个共享库类,比如: //..base.h class Base : public QObject { Q_OBJECT public: ); void PrintLog(QStr ...
- Window下 Qt 编译MySQL驱动(居然用到了动态库格式转换工具)
一步步在Window下开发Qt 今天开始安装MySQL,看了些关于MySQL安装的博文,方法大致相同,但是遇到的细节问题各有不同,或者没有讲全面,下面来说说个人的安装过程及遇到的问题. 1.首先下载, ...
- Qt打开外部程序和文件夹需要注意的细节(Qt调用VC写的动态库,VC需要用C的方式输出函数,否则MinGW32编译过程会报错)
下午写程序中遇到几个小细节,需要在这里记录一下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 QProcess *process = new QProcess(this ...
- Qt动态库静态库的创建、使用、多级库依赖、动态库改成静态库等详细说明
本文描述的是windows系统下,通过qtcreator在pro文件中添加动态库与静态库的方法: 1.添加动态库(直接添加动态库文件.dll,非子项目) 通过qtcreator创建动态库的方法就不在此 ...
随机推荐
- JIT和AOT的区别
http://net-informations.com/faq/qk/jit.htm Compilers are tools that convert human readable text into ...
- VS code 安装后gdb调试无法显示STL内容的问题
bar {...} std::_Vector_base<TSample<MyTraits>, std::allocator<TSample<MyTraits> &g ...
- 大规模并行处理器编程实战_原书第2版_pdf
链接:https://pan.baidu.com/s/1c8ez8dCTz5bUQchwhXAF7w 提取码:tc1f
- unity3d Time.deltaTime个人理解
官方的解释是:静态只读属性,时间增量,渲染上一帧所花费的时间看下面的代码 /// <summary> /// 每帧刷新 /// </summary> void Update() ...
- 删除v-for方法生成的组件的方法
一.思路 在vue:data中的数据对象添加布尔类型的属性,用来表明其是否被渲染,如果需要删除组件,就把这个属性设置为false: 在计算属性vue:computed中,根据该布尔属性过滤,生成一个新 ...
- 物料Classification 分类系统
作用:可以追加物料的属性,因为在物料主界面字段是有限的,并且并不是符合所有企业的业务,可以使用追加属性的方式给物料添加各式各样的属性 1.创建特性,Tcode:CT04 2.创建分类 Tcode:CL ...
- c#遍历一个对象的字段信息
c#遍历对象字段 场景:有一个对象作为导出word段落的数据.每一个字段就代表一个段落,可以对相应段落数据设置样式(字体.颜色.加粗--) 参考文献:(12条消息) C#获取实体类字段信息Proper ...
- mybatis核心配置文件—mappers标签设置映射文件
<!-- 加载映射文件 --> <mappers> <!--<mapper resource="mappers/UserMapper.xml"& ...
- 对象转Map
Map<String, Object> userMap = BeanUtil.beanToMap(userDTO);
- vue 报错Uncaught (in promise) cancel
解决:.catch()不能省略(因为取消操作时,无法捕获) .then(res => {...}) .catch(()=>{});(then之后把catch加上)