我们目前维护着一套设计相当好的 MFC 应用程序,但是用户界面开始看起来很疲倦,并且很多代码需要大量重构来解决一些重复和/或性能问题。我们使用相当多的自定义控件来处理它们自己的绘图(全部使用 MFC 编写)。

最近,我对 Qt 及其提供的优势进行了更多研究(跨平台并支持您可能称之为更“专业”的 UI 开发框架)。

我的问题是 - 迁移到 Qt 框架的最佳方法是什么?Qt 与 MFC 兼容吗?开始将一些自定义控件移植到 Qt 并逐渐将越来越多的控件集成到我们现有的 MFC 应用程序中会更好吗?(这可能吗?)。

任何建议或以前的经验都值得赞赏。

有帮助吗?

解决方案

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

我个人从来没有必要将 MFC 应用程序转移到使用 Qt 框架,但您可能会对以下内容感兴趣:

Qt/MFC 迁移框架

Qt/MFC 迁移框架

它是 Qt-Solutions 的一部分,因此这意味着您必须购买 Qt 许可证和 Qt-Solutions 许可证。(编辑: 不再)

我希望这有帮助 !

其他提示

(这并没有真正回答您的特定问题,但是...)我没有亲自使用QT,但是对于商业Windows开发而言,这不是免费的。

你看过吗 窗口 哪个是免费的?好文章 这里. 。顺便说一句,如果您想要适用于所有平台的单一代码库,那么您可能必须从 MFC 迁移 - 我非常确定(如果错误的话有人会纠正)MFC 仅针对 Windows。

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

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

总的来说,我的建议是咬紧牙关,立即走完全程。当然,这可能需要更长的时间,但另一种选择是花很多时间尝试调试不支持的代码。 相当 玩球,并最终编写更多代码来处理两个系统之间的细微不兼容性(曾经在那里,做过)。

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

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

我以前曾带领一个团队做过此类事情(不是从 MFC 到 QT,但原则应该可行)。

首先,我们记录了对话框以及它们的输入、控制和输出。此外,我们还专门针对 GUI 内的任何巧妙逻辑创建了几个测试用例。

有时我们必须重构一些业务逻辑,以提供一个干净的 GUI 界面,但老实说,这本来就是应该完成的方式。

现在我们有了 GUI、输入、输出、测试和封装 GUI 必须匹配的接口的列表。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top