浅谈VC中使用Qt库之三
来源:互联网 发布:最全钢琴谱 mac 编辑:程序博客网 时间:2024/06/14 09:47
前面我们讲到在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去实现。
- 浅谈VC中使用Qt库之三
- 浅谈VC中使用Qt库之二
- 浅谈VC中使用Qt库之四
- 浅谈VC中使用Qt库之一
- Qt浅谈之三:内置标准对话框
- Qt浅谈之三:内置标准对话框
- VC++生成DLL,Qt中使用DLL
- VC++生成DLL,Qt中使用DLL
- Qt浅谈之抓图截屏
- Qt使用教程之创建Qt Quick应用程序(三)
- 在C++ GUI Qt中使用QCA进行安全性编程之三
- Qt中使用windows socket api vc多线程socket
- Qt源代码使用Vs2013中VC编译器编译的流程
- Qt浅谈之总结(整理)
- Qt浅谈之十三:抓图截屏
- Qt浅谈之日历(QCalendarWidget)
- Qt浅谈之电子时钟
- Qt浅谈之五十一QT_OpenGL
- IOS APP配置.plist汇总
- 列表图片等分
- linux 计划任务不能执行 解决思路(PHP)
- js最新手机号码、电话号码正则表达式
- 说一下 zoom:1 的原理,万一被问到呢
- 浅谈VC中使用Qt库之三
- 面向对象和面向过程的区别
- 利用nginx实现数据库的负载均衡
- Unity3d 一个优秀的程序必备的几种设计模式
- HashMap实现原理简单分析
- Android MediaCodec API实现的音视频编解码
- npm安装Ionic和Cordova
- 学习正则表达式
- Go - Sublime Text