QT界面工程导出成dll并在其他界面工程调用示例

一、 首先是生成dll
1、 新建一个qt工程
在这里插入图片描述

2、 在.pro文件做如下修改

TARGET = qtdll
#TEMPLATE = app

DEFINES += dllMainWindow_LIBRARY
TEMPLATE = lib

其中qtdll 是自己dll工程名,dllMainWindow是dll类名,根据自己情况修改
3、 在dllMainWindow.h文件头新增

#if defined(dllMainWindow_LIBRARY)
#  define dllMainWindowSHARED_EXPORT Q_DECL_EXPORT**
#else
#  define dllMainWindowSHARED_EXPORT Q_DECL_IMPORT**
#endif

4、 在dllMainWindow.h的类声明前添加dllMainWindowSHARED_EXPORT

class dllMainWindowSHARED_EXPORT dllMainWindow : public QMainWindow

5、 总的dllMainWindow.h如下

#ifndef DLLMAINWINDOW_H
#define DLLMAINWINDOW_H

#include <QMainWindow>
#include "exportdialog.h"

#if defined(dllMainWindow_LIBRARY)
#  define dllMainWindowSHARED_EXPORT Q_DECL_EXPORT**
#else
#  define dllMainWindowSHARED_EXPORT Q_DECL_IMPORT**
#endif

namespace Ui {
class dllMainWindow;
}

class dllMainWindowSHARED_EXPORT dllMainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit dllMainWindow(QWidget *parent = 0);
    ~dllMainWindow();
    static bool pluginInstance(Qt::HANDLE plugin = 0);

private slots:
    void on_pushButton_clicked();

private:
    Ui::dllMainWindow *ui;

};

#endif // DLLMAINWINDOW_H

6、	dllMainWindow.cpp如下
#include "dllmainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>


dllMainWindow::dllMainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::dllMainWindow)
{
    ui->setupUi(this);
}

dllMainWindow::~dllMainWindow()
{
    delete ui;
}

void dllMainWindow::on_pushButton_clicked()
{
    //QMessageBox::about( this, "About QtMfc", "QtMfc Version 1.0\nCopyright (C) 2003" );
    ExportDialog *winh = new ExportDialog(this);
    winh->show();
}

7、 ExportDialog是该界面嵌套的二级子界面,只需要像常规一样添加即可,不需做dll导出修改,根据自己情况可嵌套多个子界面
8、 以下是界面
在这里插入图片描述

9、 设置完后执行qmake和构建即可
在这里插入图片描述

10、 最后拷出生成的.h、dll和lib以备其他界面工程调用

在这里插入图片描述
在这里插入图片描述

二、 然后是在其他工程调用
1、 vs里新建一个qt工程

在这里插入图片描述
在这里插入图片描述

2、 然后在界面里新增一个按钮,比如调用dll
在这里插入图片描述

3、 新增槽函数,只需右键按钮转到槽函数即可
在这里插入图片描述

4、 然后新增槽函数需实现的dll调用
首先添加头文件

#include "dllMainWindow.h"

然后实现dll界面调用

void qtdlluse::on_pushButton_clicked()
{
	dllMainWindow *m_mainwidget = new dllMainWindow(this);
	m_mainwidget->show();
}

5、 将dll的.h放到调用工程的目录下
在这里插入图片描述

6、 将dll的lib和dll拷到调用工程的输出目录
在这里插入图片描述

7、 最后vs编译生成即可
在这里插入图片描述

8、 最终运行效果
在这里插入图片描述

点击调用dll
在这里插入图片描述

点击dll自带按钮pushbutton
在这里插入图片描述

三、 好了,以上就是关于QT自带界面的dll输出与调用示例工程,有更好建议欢迎留言交流

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值