添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

3、在 BOOL CTestApp::InitInstance() 函数中增加一行代码:


QMfcApp::instance(this);

跟踪到QMfcApp的代码中可以清楚的看到该静态函数的功能是创建QApplication实例。


第三步:

重写CTestApp的run方法——在头文件中添加virtual int run();
cpp中的函数如下:

int CTestApp::Run()
{
int result = QMfcApp::run(this);
delete qApp;
return result;
}

注——QT帮助介绍:
QMfcApp:run()
will then use that QMfcApp::instance, which must then be deleted explicitly using the global qApp pointer.

在testDlg.h文件中添加定义——注意添加Qt的头文件:


QWinWidget *widget;

1、在工程中右击——类向导——类名要对应到testDialog这个类——到左下面的消息tab框——双击分别选中WM_CREATE和WM_DESTORY——确定


2、在CTestDialog的OnCreate函数中加入下面代码:


widget = new QWinWidget( this );
QHBoxLayout *hbox = new QHBoxLayout( widget );
QLabel *label = new QLabel( "Enter text:", widget );
QLineEdit *edit = new QLineEdit( widget );
hbox->addWidget( label );
hbox->addWidget( edit );
widget->move( 0, 0 );
widget->show();

注:记得加上对应的头文件或Qt声明:

#include "qwinwidget.h"

#include <QtGui/QHBoxLayout>

#include <QtGui/QLineEdit>

#include <QtGui/QLabel>

#include <QtGui/QSpinBox>

3. 在 CTestDialog 的 OnDestroy 方法中添加下面代码:


delete widget;


widget = 0;

添加Qt的inlcude LIB文件路径到工程的属性表中,这个分别在C/C++和链接器中添加,再在连接器——输入中添加.lib文件

如果仅做上述操作就编译的话,肯定编译不过。会报出一些链接错误

编译运行,则出现如下错误:
错误 1 error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall Widget::metaObject(void)const " (?metaObject@Widget@@UBEPBUQMetaObject@@XZ)
错误 2 error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall Widget::qt_metacast(char const *)" (?qt_metacast@Widget@@UAEPAXPBD@Z)
错误 3 error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall Widget::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Widget@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
错误 4 fatal error LNK1120: 3 个无法解析的外部命令

这是因为在源文件中没有添加上moc_qwinhost.cpp文件。
解决方法:右击hello.h,选择“自定义生成步骤”,“常规”
命令行:moc.exe .h -o moc_qwinhost.cpp
输出:moc_qwinhost.cpp
附加依赖项:moc.exe qwinhost.h
确定,然后,右击qwinhost.h,选择 “编译”,则在文件夹中生成moc_qwinhost.cpp,再将其添加到源文件中。

重复上述过程编译qwinwidget.h文件,得到moc_qwinwidget.cpp文件。工程中只需要编译这两个moc文件就可以了。

注:如果VS编译器暂时不能编译的话,可以到Qt安装文件夹下的bin文件夹中,找到moc.exe,利用cmd命令行编译这两个头文件,编译出来的文件添加到工程中即可。



错误2:
然后,运行程序,出现错误:
错误 fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?


对于上述的第二个错误可以直接在项目属性--》C/C++--》预编译头--》创建/使用预编译头改为“不使用预编译头”。这样编译就通过了。

F5运行。

《MFC&Qt混合编程》 part1 MFC对话框中嵌入Qt窗口控件1、环境配置:VS2010,Qt4.8.4_win64,Qt_VS_Addin_1.1.112、创建的MFC对话框程序3、输出为x64的debug&release程序准备工作:下载QtMigration文件http://download.csdn.net/download/power_YQ/ 操作系统:win10 嵌入 的原因 使用某公司提供的数据采集相关的动态链接库,但该链接库在VS下可正常运行,而在 Qt 下却无法运行。苦于项目申请书 已经说明,该项目的软件需使用 Qt 进行开发,不得已才出此下策。在VS下使用 MFC 调用动态连接库进行数据的采集,将 MFC 的界面进行打包后使用 Qt 调用,并 MFC 的界面 嵌入 Qt ,实现应有功能。 1、将 MFC 编译的exe即相关的动态链接库文件复制到 Qt 编译的工程目录下。 2、确定 MFC 文件的 窗口 的相关信息。打开VS
1.运行 Qt 窗口 进程,查找外部 窗口 句柄 (FindWindow 、 FindWindowEx 等) 2.设置父 窗口 SetParent 3.移动 窗口 MoveWindow、SetWindowPos 4.如果需要去掉 Qt 窗口 的标题栏,可以修改 窗口 样式 SetWindowLong 5.在你自己 窗口 的OnMove、OnSize等消息里,再次移动外部 窗口
暂时讲解 qt 控件 以DLL形式附加到win32/ mfc 程序 环境 vs2005集成 qt 编译环境+ qt 4.5 1.使用 QT 提供的两者的交互框架http://download.csdn.net/source/3539936 2.创建 QT DLL 2.将src 的.h .cpp
最近本猿搞一个 MFC QT 混合 编程 的东西,经常出现这样的错误: :/Program Files (x86)/Microsoft Visual Studio 14.0/VC/ATL MFC /INCLUDE/atlbase.(3210): Parse error at "__identifier" 查了一下,发现网上信息很少,而且很多人说 MFC QT 没法 混合 。其实他们两是可以一起玩的。所谓实践出真知...
在用 Qt 做客户端时,如果项目突然需要用到一些COM, MFC dll等,这些玩意儿在 Qt 可能无法调用,又不想用 MFC 做界面,那么是否可以 Qt , MFC 一起使用呢? 这种解决方案是存在的, Qt 是一套界面库,把 Qt 当做一套常规的SDK, 在 MFC 项目 包含 Qt 的头文件,lib,dll,这样就可以把 Qt 嵌套在 MFC 使用,问题又来了, MFC 有自己的消息映射机制, Qt 有自己的...
支持 Qt 5的 qt winmigrate,下载地址:https://github.com/ qt project/ qt -solutions 需要用到其 的q mfc app.h q mfc app.cpp qwinwidget.h qwinwidget.cpp等文件 Qt Add-in插件 VS新建一个 MFC 工程,然后卸载项目,右击编辑***.vcxproj工程文件 找到以下配置处,添加Keyword字段 Qt 4VSv1.0,可以新建一个 QT 工程打开看看值是多少 <PropertyGroup Label.