一个好用的(且免费的)VCL GUI 替代方案

4
我有一个使用Borland C++ Builder 6构建的VCL代码库,非常混乱。由于目前状态难以维护,我打算重写大部分内容。我正在寻找一个好的、免费的替代VCL的方法。这是一个只在Windows上运行的闭源商业项目。
因此,主要要求如下:
1. 商用闭源项目免费 2. 管理Windows GUI,其他组件(如db链接等)不需要 3. 可扩展(因此可以基于现有组件编写自己的GUI组件) 4. STL友好
请发表您的建议,并尽可能列出其优缺点。
编辑
感谢所有答案。我决定选择Qt,因为它还具有一些其他很好的功能,比如Qt Linguist翻译套件。

您考虑过升级到C++Builder 2009吗? http://www.codegear.com/products/cppbuilder - stukelly
6个回答

6

看看wxWidgets吧。它的设计有点老旧,但是当您开始使用最新版本时,应该会非常友好。它是商业免费的,即使您不打算使用其跨平台功能,它也可能是一个很好的库,可以用于编写Windows GUI。


我尝试过Qt一段时间了 - 它与Eclipse-CDT集成得很好。wxWidgets有类似的工具/插件吗? - Saulius Žemaitaitis
4
wxWidgets的一个优点是可以静态链接应用程序,这使得应用程序(exe + dll)更小。例如,我有一个wxWidget程序,只需要2Mo,而你必须与程序一起分发的“QtGui4.dll”则超过了11Mo。 - Rexxar
1
@frgtn:我不太了解Eclipse,所以无法发表评论。有一些用于对话框创建的工具,包括商业和免费的,还有专门针对wxWidgets项目的IDE。您可以在wxWidgets网站上找到相关链接。很抱歉,由于不知道您需要什么样的集成,无法提供更具体的信息。但是,在wxWiki中搜索Eclipse可能会有所帮助。 - mghie

5

试试Qt。它的LGPL许可证可以用于闭源软件中。它提供小部件、网络功能、数据库访问、通过WebKit进行网页渲染、动画等等。它的文档是同类产品中最好的之一。


我考虑了Qt,但无法理解我何时实际上需要购买商业许可证,以及何时我的项目可以使用LGPL许可证。我很可能必须基于Qt创建自定义小部件,这让我有点困惑,我是否仍然可以使用LGPL版本。 - Saulius Žemaitaitis
1
只有在您想要静态链接到Qt或修改Qt本身(这几乎不可能发生)时,才选择商业版。因此,LGPL是一个安全的选择。 - ismail
我不确定是否有一个可以与bcb6编译的Qt版本。这可能会证明是一个令人沮丧的努力。 - David Dean
1
它的文档是同类中最好的之一。 -- 确实如此。同时也应该提到,如果你计划将其用于商业项目,那么它的许可证是同类中最令人困惑的之一。 ;) - Wolf

3

2
你也可以使用GTK,网址为www.gtk.org。 - Sadegh

2
根据mghie所指出的:
wxWidgets是一个很棒的库。它有许多绑定(.net、lua-我最喜欢的等等),并且它有GUI编辑器。虽然它生成的代码相对晦涩,但你可以轻松地分离UI和功能。

1
您可能需要免费版的BCB:Turbo C++ Explorer,或尝试.NET CLR / WinForms。
WxWidgets只是一个GUI库。Qt是一个平台,但仍然远离像VCL这样的RAD框架。唯一有竞争力的是MFC,不幸的是它不是免费的。在某些观点上,.NET+CLR是VCL的接班人 - 好吧,也许您也可以尝试一下 - 如果您不介意它需要庞大的.NET框架。
如果您只想要一个“好的和免费的解决方案”,并且不介意坚持使用VCL,请使用TC++Exp。

抱歉,但是这怎么能算作VCL的替代品呢?问题明确地提到了吗? - mghie
1
生活在现实世界中的人们应该知道更换框架是多么昂贵,这就是为什么我建议使用同一框架的免费版本。也许这个项目一开始似乎只需要一个GUI库,但由于之前的那个是RAD,很有可能最终你会发现需要替换的东西远不止一个GUI库。我见过太多人低估了放弃MFC所需的努力,这就是我提出建议的原因。 - Francis
1
抱歉,我并不是有意挑起争端。但我会回答这个问题。当然,人们应该意识到更换GUI库或框架的成本。希望已经做好了这方面的数学计算;坚持使用一个很少使用(在C++中)的GUI库也可能非常昂贵。无论如何,真正让我感到困惑的是建议采用.NET - 这怎么可能比从VCL转换更便宜呢?特别是因为C++不太可能是首选语言,所以这可能也需要进行语言转换? - mghie
1
顺便说一句:wxWidgets 不仅仅是一个 GUI 库,还有很多底层的东西可以用于命令行应用程序。例如文件系统访问、多线程、容器类等等。但是对于大部分情况,使用 STL 或 boost 库可能会更好。 - mghie
1
还有其他人也建议使用C++ Builder 2009!为什么不去责备他呢?.NET为什么不是一个解决方案?你仍然可以在其中使用C++。我包括它是因为它具有最大的覆盖范围,并且您可以免费使用它(虽然它不是开源的)与VC Express。 - Francis
显示剩余5条评论

1

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