问题 将Borland C ++ Builder移植到Qt


我必须使用Windows 7 / mingw下的g ++将项目从Windows XP下的Borland C ++ Builder 5.0移植到Qt 4.7.1。库和命令行实用程序已经完成,现在我必须处理使用Borland VCL的GUI应用程序。
任何人都可以推荐任何工具或库来简化这项任务吗?
有没有人有这方面的经验?

编辑添加: 好吧,我抓住了牛角,并从头开始实施GUI。我不得不说,评论员是对的:我看不出任何使用现有Borland GUI来简化流程的方法。


12026
2018-01-07 14:24


起源

您的C ++ Builder GUI有多少种形式?只有几个,几十个,几百个?您可能知道,如果从头开始创建Qt GUI,您将获得最佳结果。
几十种形式。其中一些非常复杂,有树视图,标签等。所以如果我可以避免它,我不想从头开始创建它们。 - TonyK
我一直想知道有人问这个问题:)然而,从VCL到Qt的自动转换似乎不是可行的任务。 - Piotr Dobrogost


答案:


VCL和Qt之间存在几个巨大差异,这将使自动转换过程变得非常困难。

  • Qt使用信号和插槽以及VCL使用事件的继承。
  • VCL组件使用绝对坐标,Qt使用布局。当然,您也可以使用Qt的绝对坐标,但GUI会非常糟糕。
  • VCL的TListBox和TTreeView类与Qt的View和Model类完全不同(尽管你可以使用QListWidget和QTreeWidget)。

我想用Qt设计全新的GUI比创建一个平庸的VCL-to-Qt转换器要快得多。代码将更容易维护。我建议您采用一种中等复杂度的VCL形式,并使用Qt重新创建。之后,您可以估算整个娱乐工作。此外,您将更好地了解转换工具的可行性,您可能需要自己制作转换工具。


8
2018-01-07 20:50





有人编写了一个工具来将dfm转换为qt ui文件:

http://sourceforge.net/projects/dfm2qt4ui/

它有一些小错误,但它可以节省几个小时的时间移植表单设计。在某些情况下,重新设计特定表单是可取的 - 但在许多情况下,为您定位标签和大致相同的控件可以节省大量的点击操作。


1
2018-02-05 09:37



试过这个工具。结果根本不满足我。我看到,移植项目的最佳方式是从头开始实现GUI,如作者所说。 - vrogach
完全取决于表单上的控件数量等。它为我节省了大量工作但仍然需要重新组织.ui文件。但至少控件具有相同的变量名称,并且已经添加到表单中。完全重写将始终引入许多新错误。 - Pete


我同意目前的共识,即从VCL到QT的自动转换不是一个好主意,因为两者背后的概念是非常不同的,你最好学习“QT方式”并从一开始就使用它。
然而,没有人提到过一个重要的步骤:重构!在开始之前,请确保重构原始表单以尽可能多地删除业务逻辑,并仅保留真正的GUI代码。这取决于你的架构当然有多好,但是VCL设计师倾向于鼓励尽可能多地使用表格(甚至可以使用非可视组件隐藏“数据表单”!),所以你经常会发现很多形式的东西都不应该存在。


1
2017-12-16 14:12