Qt 界面做成dll以便调用

摘要:
在升级功能时只需要升级dll即可

1、将界面做成dll

修改pro文件

1 DEFINES +=WIDGETDLL_LIBRARY
2 TEMPLATE = lib

修改头文件

1 #if defined(WIDGETDLL_LIBRARY)
2 #  define WIDGETDLLSHARED_EXPORT Q_DECL_EXPORT
3 #else
4 #  define WIDGETDLLSHARED_EXPORT Q_DECL_IMPORT
5 #endif
6  
7 class WIDGETDLLSHARED_EXPORT WidgetDll:public QWidget, privateUi::Form
8 {
9 Q_OBJECT
10 public:
11  
12     WidgetDll(QWidget *parent = 0);
13  
14 signals:
15     voidbuttonPressed(QString);
16  
17 privateslots:
18     voidon_pushButton_clicked();
19 };

生成dll

2、新建桌面工程,在工程中添加引用dll的头文件

1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3  
4 #include <QMainWindow>
5 #include "widgetdll.h" //dll头文件
6  
7 namespaceUi {
8 classMainWindow;
9 }
10  
11 class MainWindow : publicQMainWindow
12 {
13 Q_OBJECT
14  
15 public:
16     explicit MainWindow(QWidget *parent = 0);
17     ~MainWindow();
18 privateslots:
19     void getBtn(QString); //接受dll中的信号
20 private:
21     Ui::MainWindow *ui;
22  
23     WidgetDll *m_mainwidget;
24 };
25  
26 #endif //MAINWINDOW_H

在构造函数中添加

1 m_mainwidget = new WidgetDll(this);
2 setCentralWidget(m_mainwidget);
3 connect(m_mainwidget,&WidgetDll::buttonPressed,this,&MainWindow::getBtn);

结果:centerwidget为dll,点击pushbutton向主程序发生消息

Qt 界面做成dll以便调用第1张

总结:

统一程序的接口,分解程序。在升级功能时只需要升级dll即可

免责声明:文章转载自《Qt 界面做成dll以便调用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇矩阵的迹(转)nodejs中mysql用法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C# 加载C++创建的动态链接库dll

创建dll 1.打开vs,点击文件-->新建-->项目。 2.选择C++下面的windows桌面,右边选择动态链接库(DLL)。新建成功之后,默认为x86平台。 按照你自己的需求更换平台,必须调用的和被调用的dll同为一个平台。 3.新建之后,在头文件中添加mydll.h,内容为: #define DLL_API extern "C" _de...

C# 利用反射动态加载dll

笔者遇到的一个问题,dll文件在客户端可以加载成功,在web端引用程序报错。解决方法:利用反射动态加载dll 头部引用加: using System.Reflection; 主要代码: Assembly asm = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory+ "/DeclareDLL/...

【域渗透】域权限维持

一、ssp密码记录 ssp(security Support Provider),一个用于身份验证的 dll,系统在启动时 SSP 会被加载到 lsass.exe 进程中,由于 lsa 可扩展,导致在系统启动时我们可以加载一个自定义的 dll,一个用于记录所有登录到当 前系统的明文账号密码的 dll, 利用mimikatz 中mimilib.dll 文件。...

程序破解之 API HOOK技术 z

API HOOK,就是截获API调用的技术,在程序对一个API调用之前先执行你的函数,然后根据你的需要可以执行缺省的API调用或者进行其他处理,假设如果想截获一个进程对网络的访问,一般是几个socket API : recv,recvfrom, send, sendto等等,当然你可以用网络抓包工具,这里只介绍通过API HOOK的方式来实现, 主要原理是...

多页应用 Webpack4 配置优化与踩坑记录

前言 最近新起了一个多页项目,之前都未使用 webpack4 ,于是准备上手实践一下。这篇文章主要就是一些配置介绍,对于正准备使用 webpack4 的同学,可以做一些参考。 webpack4 相比之前的 2 与 3,改变很大。最主要的一点是很多配置已经内置,使得 webpack 能“开箱即用”。当然这个开箱即用不可能满足所有情况,但是很多以往的配置,其实...

Side by Side Assembly介绍--manifest文件的使用

什么是Side-by-Side Assembly? Side-by-Side Assembly(建称SxS)是微软在Visual Studio 2005(Windows 2000?)中引入的技术,用来解决Windows平台上的DLL Hell问题。DLL Hell的介绍可以看Wikipedia的文章。简单的说,DLL Hell窘境包括了Windows应用程...