| 查看: 2190 | 回复: 8 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
yalefield金虫 (文坛精英)
老汉一枚
|
[交流]
【转帖】MFC与Qt混合编程---“官方文档”的缩写 已有3人参与
|
||
|
作者:程序开发之家 http://www.cngeng.info/qt%B1%E0%B3%CC/2044.html 现在,Windows下的大多数程序都是使用mfc开发的,由于众多产品想移植到非windows的操作系统上继续使用,qt由于自身“一次编写,到处编译 ”的特性恰恰满足了这种需求。所以,怎么从mfc程序迁移到qt上来是很多公司需要考虑的问题。至于从qt迁移到mfc这种需求应该是不会出现的 ,mfc1.0 1992年就发布,qt94年才开始动工呢。怎么说都是mfc历史悠久,地大物博... 选择了qt作为mfc的替代品,那就得考虑是新建一个qt工程重新写一遍还是能在原来的mfc工程里直接使用qt 组件逐步替换掉mfc的部分。本文讨论的是后一种需求。所幸的是,细心的qt官方也考虑到了这一点。官方提供了 Qt/MFC Migration Framework 来实现在mfc工程里混用qt的组件。可以从这个页面找到相关的下载:http://doc.trolltech.com/solutions/qtwinmigrate/winmigrate-walkthrough.html 这个framework比较简单就包括几个类QWinWidget,QMfcApp等。 关于具体怎么做,该页面上也能找到很多实例。翻译成中文大致有这么几点: 首先,要想使用一个QtGui部件,比如QPushButton, QWidget之类的,必须有一个QApplication 对象存在。在创建一个QPushButton时,代码会检测是否有这么一个QApplication对象存在,否则程序会crash掉。所以需要创建一个 QApplication对象: 创建了QMfcApp对象,那些QWidget们就有指望了,因为它们的事件需要QApplication 来管理分配。所以,接着就要用QMfcApp对象来接管CWinApp的程序运行机制。 重载CWinApp的Run函数,调用QMfcApp::run(this); 这里用到了上面创建的QMfcApp对象来同时接管QWidget的 event和MFC的message loop. 代码如下: 现在QApplication对象已经有了,new 一个 QPushButton上去,程序也不会报错了。但是,如何让这个QPushButton 能显示在 MFC的窗口类里面呢? 因为构造QPushButton的时候,父类只能接受一个QWidget,而不能不接受一个父类窗口的windows handle。 QWinWidget登场了! 来看一下QWinWidget的构造函数: QWinWidget ( HWND hParentWnd, QObject * parent = 0, Qt::WFlags f = 0 ); 啥也不用说了,代码如下: 懒得翻译了,直接贴一段吧 Now we can create the QWinWidget instance with this CWnd instance as a parent window, and use that instance as a parent to the QWidgets we want to use to create the user interface. Since QWinWidget is a proper QWidget it can be laid out, and we move the Qt GUI to the upper left corner of the MFC child and show() the user interface immediately. 最后别忘了,这个widget还是要干掉的。widget一干掉,下面那些子子孙孙widget全部干掉,qt就这么霸道! 就简单讲到这里。我们已经知道如何让mfc代码和qt代码放在一起编译通过了,剩下的工作就是把mfc部分一点点替换掉了。 任重而道远! [ Last edited by yalefield on 2011-1-31 at 00:02 ] |
» 猜你喜欢
论文终于录用啦!满足毕业条件了
已经有21人回复
不自信的我
已经有5人回复
磺酰氟产物,毕不了业了!
已经有4人回复
投稿Elsevier的杂志(返修),总是在选择OA和subscription界面被踢皮球
已经有8人回复
» 本主题相关价值贴推荐,对您同样有帮助:
【转帖】Qt的Model/View Framework解析
已经有2人回复
【转帖】Windows下编写Qt插件
已经有0人回复
【转帖】彻底超越MFC-->诺基亚的开源GUI库:Qt
已经有2人回复
| 感谢分享。 |
9楼2012-05-07 05:17:16







回复此楼