QT在DLL导出界面

一个QT的DLL项目,其中有一个界面已经导出,但是在其他工程中引用的时候,出现了错误。

界面导出类:

#pragma once

#include <QWidget>
#include "ui_QtGuiLogin.h"
#include "qtadd_global.h"

class QTADD_EXPORT QtGuiLogin : public QWidget
{
	Q_OBJECT

public:
	QtGuiLogin(QWidget *parent = Q_NULLPTR);
	~QtGuiLogin();

private:
	Ui::QtGuiLogin ui;
};

#include "QtGuiLogin.h"

QtGuiLogin::QtGuiLogin(QWidget *parent)
	: QWidget(parent)
{
	ui.setupUi(this);
}

QtGuiLogin::~QtGuiLogin()
{
}

在另外一个项目中要使用这个导出的界面,首先设置好链接库:

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_QtGuiTest.h"

class QtGuiLogin;

class QtGuiTest : public QMainWindow {
	Q_OBJECT

public:
	QtGuiTest(QWidget *parent = Q_NULLPTR);

private:
	Ui::QtGuiTestClass ui;

	QtGuiLogin* _guiTest = nullptr;
};
#include "QtGuiTest.h"

#include "../QtAdd/QtGuiLogin.h"

QtGuiTest::QtGuiTest(QWidget *parent)
	: QMainWindow(parent) {
	ui.setupUi(this);

	_guiTest = new QtGuiLogin;
	_guiTest->show();
}

编译出现了错误:

fatal error C1083: 无法打开包括文件: “ui_QtGuiLogin.h”: No such file or directory (编译源文件 QtGuiTest.cpp)

原因:是因为导出的DLL的头文件中包含了对象Ui::QtGuiTest ui,而且这个对象的定义没有找到。

解决:把导出的类修改一下就可以了,头文件中值包含声明:

#pragma once

#include <QWidget>
#include "qtadd_global.h"

namespace Ui {
	class QtGuiLogin;
}

class QTADD_EXPORT QtGuiLogin : public QWidget
{
	Q_OBJECT

public:
	QtGuiLogin(QWidget *parent = Q_NULLPTR);
	~QtGuiLogin();

private:
	Ui::QtGuiLogin* ui;
};

#include "QtGuiLogin.h"
#include "ui_QtGuiLogin.h"

QtGuiLogin::QtGuiLogin(QWidget *parent)
	: QWidget(parent)
{
	ui = new Ui::QtGuiLogin;
	ui->setupUi(this);
}

QtGuiLogin::~QtGuiLogin()
{
}

再次编译就通过了!

aaa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wb175208

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值