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