请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。
MFC 与 QT 混合编程 --- 在 MFC 程序中使用 QT 的组件
<!-- [if !supportLists]-->1. <!-- [endif]-->创建一个最简单的 MFC Dialog 程序。
<!-- [if !supportLists]-->2. <!-- [endif]-->在 BOOL CTestApp::InitInstance() 函数中增加
QMfcApp::instance(this);
跟踪到QMfcApp
的代码中可以清楚的看到该静态函数的功能是创建QApplication
实例。
<!-- [if !supportLists]-->3. <!-- [endif]-->重写CTestApp的run方法。
如下:
这个我也没大搞明白是什么意思。
QT帮助上说:
QMfcApp:run() will then use that QMfcApp::instance, which must then be deleted explicitly using the global qApp pointer.
我也没搞懂什么意思。
4. <!-- [endif]-->在testDlg.h文件中定义: QWinWidget *widget; 5. <!-- [endif]-->然后就很简单了。
在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(); 6. <!-- [endif]-->在 CTestDialog 的 OnDestroy 方法中:
delete widget;
widget = 0;
<!-- [if !supportLists]-->7. <!-- [endif]-->在 qmake –project 生成的 .pro 文件中加入:
DEFINES -= UNICODE
DEFINES += _AFXDLL WINVER=0x0500
include(../../../src/qtwinmigrate.pri)
否则编译不过。
<!-- [if !supportLists]-->8. <!-- [endif]-->qmake nmake 运行一下