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

一、 首先是生成dll
1、 新建一个qt工程
QT界面工程导出成dll并在其他界面工程调用示例_第1张图片

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 
#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 


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、 以下是界面
QT界面工程导出成dll并在其他界面工程调用示例_第2张图片

9、 设置完后执行qmake和构建即可
QT界面工程导出成dll并在其他界面工程调用示例_第3张图片

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

QT界面工程导出成dll并在其他界面工程调用示例_第4张图片
QT界面工程导出成dll并在其他界面工程调用示例_第5张图片

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

QT界面工程导出成dll并在其他界面工程调用示例_第6张图片
QT界面工程导出成dll并在其他界面工程调用示例_第7张图片

2、 然后在界面里新增一个按钮,比如调用dll
QT界面工程导出成dll并在其他界面工程调用示例_第8张图片

3、 新增槽函数,只需右键按钮转到槽函数即可
QT界面工程导出成dll并在其他界面工程调用示例_第9张图片

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

#include "dllMainWindow.h"

然后实现dll界面调用

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

5、 将dll的.h放到调用工程的目录下
QT界面工程导出成dll并在其他界面工程调用示例_第10张图片

6、 将dll的lib和dll拷到调用工程的输出目录
QT界面工程导出成dll并在其他界面工程调用示例_第11张图片

7、 最后vs编译生成即可
QT界面工程导出成dll并在其他界面工程调用示例_第12张图片

8、 最终运行效果
QT界面工程导出成dll并在其他界面工程调用示例_第13张图片

点击调用dll
QT界面工程导出成dll并在其他界面工程调用示例_第14张图片

点击dll自带按钮pushbutton
QT界面工程导出成dll并在其他界面工程调用示例_第15张图片

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

你可能感兴趣的:(qt,dll)