将 Borland C++ Builder 移植到 Qt

11

我需要将一个在Windows XP下使用Borland C++ Builder 5.0编写的项目,移植到在Windows 7/mingw下使用g++和Qt 4.7.1。现在库和命令行工具已经完成,接下来要解决GUI应用程序,这些应用程序使用了Borland VCL。

是否有人可以推荐任何工具或库使这个任务更容易?

编辑:好吧,我勇敢地从头实现了GUI。我必须说,评论者是对的:我看不出使用现有的Borland GUI来简化这个过程的任何方法。


你的C++Builder GUI有多少个表单?只有几个,几十个,还是几百个?正如你所知道的,如果你从头开始创建Qt GUI,你会得到最好的结果。 - user362638
有几十个表单,其中一些相当复杂,包括树形视图、选项卡等。因此,如果可以避免的话,我不想从头开始创建它们。 - TonyK
我一直在想,当有人问这个问题时 :) 从VCL到Qt的自动转换似乎不是可行的任务。 - Piotr Dobrogost
3个回答

8

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

  • Qt使用信号和槽以及继承,而VCL使用事件。
  • VCL组件使用绝对坐标,而Qt使用布局。当然,你也可以在Qt中使用绝对坐标,但是GUI会变得非常糟糕。
  • VCL的TListBox和TTreeView类与Qt的View和Model类非常不同(虽然你可以使用QListWidget和QTreeWidget代替)。

我想使用Qt完全重新设计GUI要比创建一个中等复杂度的VCL-to-Qt转换器快得多。并且代码将更容易维护。我建议您选择一个中等复杂度的VCL表单,并使用Qt重新创建它。这之后,您可以估计总重新创建工作量。此外,您将更好地了解转换工具的可行性,这很可能需要您自己制作。


2

有人写了一个工具,可以将dfm转换为qt ui文件:

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

它有一些小问题,但可以节省数小时的时间进行表单设计的移植。在某些情况下,重新设计特定表单是更可取的 - 但在许多情况下,已经为您定位标签和大致等效的控件可以节省很多点按操作。


尝试了这个工具,结果完全不令我满意。我认为最好的移植项目的方法是像作者所说的那样从头开始实现GUI界面。 - vrogach
1
完全取决于表单上控件的数量等因素。这为我节省了很多工作,但仍需要大量重新组织.ui文件。但至少控件具有相同的变量名称并已添加到表单中。完全重写总会引入许多新错误。 - Pete

1
我同意当前共识,即自动从VCL转换到QT并不是一个好主意,因为两者背后的概念非常不同,最好从一开始就学习“QT方式”并使用它。
然而,还有一个主要步骤没有被提及:重构!在开始之前,请确保重构原始表单,尽可能删除业务逻辑,只留下真正的GUI代码。当然,这取决于您的架构已经多么出色,但是VCL设计器倾向于鼓励将尽可能多的内容放入表单中(甚至走得太远,拥有不可见的“数据表单”和非视觉组件!),因此您经常会发现表单中有很多不应该在那里的东西。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接