《MFC&Qt混合编程》 part1 MFC对话框中嵌入Qt窗口控件

  • Post author:
  • Post category:其他


看到一篇写的靠谱的MFC与Qt混合编程的文章,mark一下,转自


http://blog.csdn.net/sinat_24206709/article/details/77185974

《MFC&Qt混合编程》 part1 MFC对话框中嵌入Qt窗口控件

1、环境配置:VS2010,Qt4.8.4_win64,Qt_VS_Addin_1.1.11

2、创建的MFC对话框程序

3、输出为x64的debug&release程序

准备工作:

下载QtMigration文件


http://download.csdn.net/download/power_YQ/3539936

第一步:

创建一个最简单的 MFC Dialog 程序——编译应该是正常的MFC程序。

第二步:.

1、将下载后的source文件中qmfcapp qwinhost qwinwidget 六个对应的.h .cpp文件添加到工程中

2、添加对应的Qt头文件:

include

include “qmfcapp.h”

include “qwinhost.h”

include “qwinwidget.h”

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

include

include

include