zoukankan      html  css  js  c++  java
  • 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

    效果如下:

     

     

  • 相关阅读:
    axios解决调用后端接口跨域问题
    vuex的使用入门-官方用例
    vue使用axios实现前后端通信
    vue组件间通信用例
    vue-router的访问权限管理
    vue-router使用入门
    PHP 流程控制
    PHP 表达式和运算符
    PHP 预定义变量
    PHP 常量
  • 原文地址:https://www.cnblogs.com/ITGUANCHAZHE/p/14319726.html
Copyright © 2011-2022 走看看