我们目前维护了一套MFC应用程序,这些应用程序设计得相当好,但用户界面开始变得疲惫不堪,而且很多代码需要进行相当多的重构以整理一些重复和/或性能问题。我们使用了很多自定义控件来处理所有自己的绘图(都使用MFC编写)。
最近,我一直在对Qt及其提供的好处进行更多的研究(跨平台并支持你可能称之为更专业的UI开发框架)。
我的问题是 - 可能转向Qt框架的最佳方法? Qt和MFC玩得好吗?开始将我们的一些自定义控件移植到Qt并逐渐将更多和更多集成到我们现有的MFC应用程序中会不会更好? (这可能吗?)。
感谢任何建议或以前的经验。
答案 0 :(得分:8)
在我的公司,我们目前正在使用Qt并对此非常满意。
我个人从未将MFC应用程序移动到使用Qt框架,但这可能是您感兴趣的内容:
<击> 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个对话框,尽管有一个团队,我们有十几个人正在研究它。