一、 首先是生成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输出与调用示例工程,有更好建议欢迎留言交流