将Qt集成到传统MFC应用程序中

时间:2008-08-26 09:37:52

标签: c++ qt mfc

我们目前维护了一套MFC应用程序,这些应用程序设计得相当好,但用户界面开始变得疲惫不堪,而且很多代码需要进行相当多的重构以整理一些重复和/或性能问题。我们使用了很多自定义控件来处理所有自己的绘图(都使用MFC编写)。

最近,我一直在对Qt及其提供的好处进行更多的研究(跨平台并支持你可能称之为更专业的UI开发框架)。

我的问题是 - 可能转向Qt框架的最佳方法? Qt和MFC玩得好吗?开始将我们的一些自定义控件移植到Qt并逐渐将更多和更多集成到我们现有的MFC应用程序中会不会更好? (这可能吗?)。

感谢任何建议或以前的经验。

4 个答案:

答案 0 :(得分:8)

在我的公司,我们目前正在使用Qt并对此非常满意。

我个人从未将MFC应用程序移动到使用Qt框架,但这可能是您感兴趣的内容:

<击> Qt/MFC Migration Framework

Qt/MFC Migration Framework

它是Qt-Solutions的一部分,因此这意味着您必须购买Qt许可证以及Qt-Solutions许可证。 (编辑:not any more

我希望这有帮助!

答案 1 :(得分:2)

(这并没有真正回答你的具体问题,但......) 我没有亲自使用Qt,但它不适用于商业Windows开发。

你看过免费的wxWindows吗?好文章here。顺便说一下,如果你想为所有平台建立一个代码库,那么你可能不得不从MFC迁移 - 我很确定(有人会纠正错误)MFC只针对Windows。

另一个选择是查看VS2008 SP1中的Feature Pack update到MFC - 它包括对新控件的访问,包括Office样式功能区控件。

答案 2 :(得分:0)

这是一个棘手的问题,我怀疑答案取决于你有多少时间。如果将自定义控件移植到Qt,您将获得更好的结果 - 如果您使用QStyle类进行实际绘制,那么您最终将获得开箱即用的主题代码。

总的来说,我的建议是咬紧牙关,立刻全力以赴。当然,它可能需要更长的时间,但另一种方法是花费一个时间来尝试调试不会完全播放球的代码,并最终编写更多代码来处理两个系统之间的微小不兼容性(去过那里,完成了。)

因此,总而言之,我的建议是启动一个分支并删除所有旧的MFC代码并用Qt替换它。你将获得免费的平台独立性(几乎),虽然它需要一段时间,但最终你会得到一个更好的产品。

最后一句警告:确保您花时间了解“Qt做事方式” - 在某些情况下,它可能与MFC方法完全不同 - 您要做的最后一件事就是结束使用MFC风格的Qt代码。

答案 3 :(得分:0)

我之前带领团队做过这种事情(不是MFC到QT,但原则应该有效)。

首先,我们记录了对话框以及它们的输入,控制和输出。此外,我们创建了几个测试用例,尤其是GUI中的任何聪明逻辑。

有时候我们不得不重构一些业务逻辑来为GUI提供一个干净的界面,但这是它本应该在第一时间完成的方式。

现在我们有一个GUI,输入,输出,测试列表以及封装的GUI必须匹配的接口。

我们开始逐个项目,为旧的GUI创建等效的GUI。一旦我们这样做,我们可以将GUI插入旧的位置,重建并测试它。起初我们绊倒了很多但我们很快解决了常见错误并修复了它们。我们浏览了(我认为)612个对话框,尽管有一个团队,我们有十几个人正在研究它。