浅谈VC中使用Qt库之三

前面我们讲到在VC中直接使用Qt,这种方法将Qt和VC代码混在一起,感觉不伦不类,更好的方法是将这些界面封装在库中,vc通过加载dll的方式来使用。

1.首先创建一个win32 项目-》选择动态库-》完成

将前面工程的EdbParamaUi.h EdbParamaUi.cpp moc_EdbParamaUi.cpp拷贝到该工程中并加入工程。



2. 编写导出函数





编译运行生成库。


3.测试工程我们使用前面的几节的工程修改代码如下:

oid CMFCApplication4Dlg::OnBnClickedButton1()
{
// TODO:  在此添加控件通知处理程序代码
//QMessageBox::information(NULL, QStringLiteral("这是Qt消息框"), QStringLiteral("这是Qt消息框"));


//这里测试我给的绝对路径
HMODULE mod = LoadLibrary(_T("E:/work/QuotationExcelUi/Debug/QuotationExcelUi.dll"));


//这个是测试Qt生成的Dll的部分,先动态载入,再使用导出的函数  


if (mod)
{

typedef void(*pShowDialog)(HWND parent);


pShowDialog showDialog = (pShowDialog)GetProcAddress(mod, "ShowEdbParamaUi");


if (showDialog)
showDialog(NULL);


FreeLibrary(mod);


}
}


然后将先前添加的Qt代码都注销(因为一个进程只能有一个QApplication对象)

4.运行该工程

出现找不到QtCore.dll文件。

我们将Qt安装目录下bin目录下的所有文件拷贝到这个工程的exe文件的目录。

再次运行 点击按钮

·


成功

但是这里需要将Qt的库拷贝奥目录 要是有多个exe掉用这个dll 每个exe都得带上一份Qt库,这显然不符合正常逻辑, 解决办法将Qt 库目录添加到环境变量中:



重启vs 并删掉 该目录的Qt 库 重新运行发现成功运行了。


自此这2种方法应该可以满足一般的开发需要了,至于要在Qt使用MFC 思路也基本一致,如果你的Qt版本在5.0以下建议使用qtwinmigrate-2.8_1去实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值