真●完美●封装 Qt 界面、事件循环为DLL供调用(完整实现)

环境:VS2017,Qt5.12.10(安装了msvc2017组件,并添加环境变量)
需求和概览:
Qt的信号与槽和便捷的界面编写非常有利于UI开发,很多时候希望把已经编写好的界面和逻辑加载到现有工程中,这时选择DLL加载是很敏捷的做法。
众所周知的,只有在构建了 QApplicationQCoreApplication(以下以QApplication为例) 后才能使用 QWidget 和信号与槽以及众多其他需要事件循环的功能。
在一个独立的Qt程序中,QApplication*一般是在main中构建的:

#include <QApplication>
int main(int argc, char *argv[])
{
   
    QApplication app(argc, argv);
    A a;
    return app.exec();
}

然而要封装成DLL就需要在类里构建QApplication,形如QtAddOn_1.h

#pragma once
#include <QtWidgets/QDialog>
#include <QtWidgets/QApplication>
class QtAddOn_1:public QDialog
{
   
	Q_OBJECT
private:
	QApplication* app;
public:
	explicit QtAddOn_1();
};

形如QtAddOn_1.cpp

#include "pch.h"
#include "QtAddOn_1.h"
QtAddOn_1::QtAddOn_1() {
   
	int argc;
	char ** argv = nullptr;
	app = new QApplication(argc, argv);

	//做一些Qt能做的所有事

	app->exec();
}
#include"moc_QtAddOn_1.app"

形如DLL导出文件Modle.h

#pragma once
#include "QtAddOn_1.h"
namespace QtModles {
   
	__declspec
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值