显示dll里的QWidget

1 新建库->C++库

2 命名(此处为mydll)并选择共享库--下一步--下一步

3 选择所需要的模块(有使用到的都选上)此处勾选前三项QtCore+QtGui+QtWidgets

4 完成创建

5 添加界面文件---新建-文件和类-Qt设计师界面

6 选界面模板Widget(根据需要)

7 设定保存文件名(此处同项目名为mydll)

8 进入可视化界面设计,修改objectName为mydll(此处必须设定成与项目类同名,否则会报错)

9 修改mylib.h

原内容

#ifndef MYDLL_H
#define MYDLL_H

#include "mydll_global.h"

class MYDLLSHARED_EXPORT Mydll
{

public:
    Mydll();
};

#endif // MYDLL_H

改为


#ifndef MYDLL_H
#define MYDLL_H
#include "mydll_global.h"
#include <QWidget>
namespace Ui {
    class mydll;
}
class MYDLLSHARED_EXPORT Mydll:public QWidget
{
public:
    Mydll(QWidget *parent = 0);
private:
    Ui::mydll *ui;
};
#endif // MYDLL_H

10 修改mydll.cpp

原内容

#include "mydll.h"


Mydll::Mydll()
{
}

改为

#include "mydll.h"
#include "ui_mydll.h"

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

11构建即可生成dll(注意使用静态编译的Qt只生成.a没有生成dll)

12 使用dll和使用其它dll一样

INCLUDEPATH += D:\Qt\mydll\mydll
LIBS += D:\Qt\mydll\build-mydll-Desktop_Qt_5_3_MinGW_32bit-Release\release\mydll.dll

.h

#include "mydll.h"
private:
    mydll w;

.cpp

w.show();

即可

注意:需要头文件mydll.h同时也要把mydll_global.h放在同文件夹内(如在mydll内将二者合并无法创建dll)

http://blog.csdn.net/yh_1988/article/details/71933369

时间: 2024-11-05 22:35:27

显示dll里的QWidget的相关文章

在dll里malloc/new/cvCreate分配内存,在exe里free/Releases释放内存时会出错。

写了个程序,在DLL中用malloc分配了一块内存,但是在exe程序中释放,结果程序crash,原因就是:其原因可能是堆被损坏,这也说明 TestMySticker.exe 中或它所加载的任何 DLL 中有 bug. 以下文字引用自 http://hi.baidu.com/huhe/blog/item/0b422edd1f1563d98c1029a3.html 一个模块一个堆,一个线程一个栈. dll里malloc的内存,在exe里free会出错. CRT(C运行时期库)不是使用进程缺省的堆来实

准确看看 user32.dll 里有哪些导出函数(win7-32)

看看 user32.dll里有哪些导出函数,大家都会,但准确性???以MS dumpbin为标准,要做出来结果一模一样,才表示代码完全正确. 直接上代码: 1 // ListExport.cpp : Defines the entry point for the console application. 2 // 3 #include "stdafx.h" 4 #include <windows.h> 5 #include <winnt.h> 6 7 exter

LYNC客户端不显示通讯组里的用户的解决办法。

LYNC客户端不显示通讯组里的用户的解决办法 错误图如下: 解决办法:ISA代理服务器的问题,把代理服务器高级里加上lync服务器的名字就可以了.

sql server中调用c#写的dll里的方法

最近有一项目: 一超市管理系统单机版,运行在WIN2003+SQL2005上,每天超市关门都都会关电脑,现客户要新加功能,每天关门下班后回家可以上网查看超市管理系统的数据库里的相关数据,然后再做一些原系统没有的统计分析等,老系统不能做大改动,像升级到WIN2012+SQL2012等这些操作,改动越小越好. 现在的想法是:阿里云买台服务器,装上SQL,然后建立的数据库和超市管理系统上的数据库一毛一样,然后想办法,当超市管理系统数据库里的增表增删改的时候,同步阿里云服务器上的数据库保持数据一致, 然

Delphi的DLL里如何实现定时器功能?

一,首先引入“mmsystem”单元. 二,启动定时器: var MMTimerID: Integer; // 定时器ID MMTimerID := timeSetEvent(1000, 0, @TimerProc, 0, TIME_PERIODIC); 三,定时器过程代码: procedure TimerProc(uTimerID, uMessage: UINT; dwUser, dw1, dw2: DWORD); stdcall;begin  // 业务代码end; 四,结束定时器: tim

将SPCOMM封装到了DLL里

演示程序: 链接: https://pan.baidu.com/s/10--C9SkdCNgcD7XxsqQtoA 密码: hsy7 Delphi源码,付款后自动网盘链接 : QQ群:621816328 原文地址:https://www.cnblogs.com/plug/p/8665186.html

驱动里执行应用层代码之KeUserModeCallBack(WOW64是由三个动态库wow64.dll wow64win.dll wow64cpu.dll来实现)

在驱动层(ring0)里执行应用层(ring3)代码,这是个老生常谈的技术,而且方法也挺多. 这种技术的本质:其实就是想方设法在驱动层里把应用层代码弄到应用层去执行. 比如在APC异步调用中,KeInsertQueueApc,KeInitializeApc等函数中可设置一个在ring3层执行一个回调函数,这样就可以回到应用层去执行代码了. 再比如在驱动中查找某个进程的一个线程,然后挂起它,把他的EIP指向需要执行的一段代码(把驱动层需要注入的这段代码叫ShellCodde), 执行完之后再回到线

[转载]DLL和exe里的malloc和free不能混用的问题

源自: http://bjwf.cndev.org/2004/06/03/559/ http://bbs.csdn.net/topics/40214261 ====================================== 今天老玉米提了一个问题问为什么dll里malloc的内存如果在exe里free的话会出错,我分析了一下C库的原代码,得出结论如下: 刚看了一下malloc和free 的源代码,在这两个函数中都有对全局变量的引用,而malloc和free是C库函数,分别被静态链接到e

2种方式解决nginx负载下的Web API站点里swagger无法使用

Web API接口站点,引入了swagger来实时生成在线的api文档,也便于api接口的在线测试.swagger:The World's Most Popular Framework for APIs. 本地测试没有问题. 发布到生产,问题出现了.——线上部署的站点是用nginx做的3个节点的负载.nginx配置了公开的域名,并且与3个节点iis上的站点做了映射.3个单节点的端口不是默认的80,由此问题产生了:当访问swagger时,swagger自动获取的文档的url包含了这个端口,因为站点