Qt现在在LGPL下发布,你会推荐它在wxWidgets上吗?

时间:2009-01-21 08:40:58

标签: python qt wxpython wxwidgets

我是wxWidgets的重度用户,部分原因是出于许可原因。

  • 您如何看待wxWidgets的未来,以及现在正在LGPL下发布的recent announcement Qt?
  • 你认为wxwidget仍然是新项目的一个很好的技术选择吗?或者你会建议采用Qt,因为它将成为事实上的标准。
  • 我也对它们与最常见的脚本语言(例如PyQt,wxPython,wxRuby)的绑定可能产生的影响感兴趣。为什么PyQt在拥有专业级设计师和wxPython时没有得到充分利用?

相关:

  

https://stackoverflow.com/questions/443546/qt-goes-lgpl-on-windows-is-it-good-enough-to-use-instead-of-mfc

7 个答案:

答案 0 :(得分:14)

对于我们这些被wxWidgets吸引的人,因为它是跨平台库,使用本机控件来获得正确的外观和感觉,Qt的许可变更几乎没有后果。

修改

关于

  

Qt没有原生控件但是原生绘图功能

让我引用wxWidgets wiki page comparing toolkits

  

Qt没有真正的原生端口,比如wxWidgets。我们的意思是,即使Qt非常逼真地绘制它们,Qt也会在每个平台上绘制自己的小部件。值得一提的是,Qt配备了适用于Mac OS X和Windows XP和Vista的特殊样式,它们使用原生API(Mac OS X上的外观管理器,Windows XP上的UxTheme)来绘制标准窗口小部件基元(例如滚动条或按钮)原生申请。 事件处理,由此产生的视觉反馈和小部件布局始终由Qt。

实现

答案 1 :(得分:12)

我目前正在使用pyqt工作,我发现自己完全满意。 你有更好的文档(恕我直言),更好的事件管理(信号槽模式比旧的简单回调样式更强大),并且在像qt-designer这样的图形设计器中导入自定义窗口小部件要容易得多。 据我所知,qt-designer比任何wxpython更强大,比如Boa Constructor和pyGlade)。 您也非常支持使用不同语言翻译程序的字符串(至少比wxLocale更好的支持,您可以使用Qt-Linguist这样的工具,它完全集成在qt系统中)。

我在一些爱好作品中使用wxpython,但我仍然是那里的菜鸟。我认为它比pyqt更大的优势是在不同平台上拥有原生外观和感觉。例如,如果您正在开发Windows / Linux应用程序,这是一个重点。实际上你可以使用“皮肤”来获得原生的外观和感觉与windows-qt应用程序,但我不知道如何实现这一点(对不起,我从来没有在Windows上使用过qt:D)。

答案 2 :(得分:8)

请注意,截至2009年1月,虽然Qt 4.5将在LGPL下提供,但Riverbank Computing尚未发布有关未来版本PyQt的许可的任何公告。 PyQt仍然只有commercial/GPLv2/GPLv3

正如对此答复的评论所述,诺基亚于2009年8月宣布了LGPL许可的PySide项目。

答案 3 :(得分:6)

老实说,我认为人们不会大规模地转离WxWidgets。

对于python,有PyQt绑定和WxPython绑定。尽管Qt比WxWidgets更实用,但大多数GUI python开源程序都是用WxWidgets编写的。由于这些程序是开源的,因此GPL与LGPL在选择工具包时并不重要。

Gtk也是如此。许多开源应用程序都是在Windows上用Gtk编写的,尽管Gtk在Windows上很难处理。使用Qt,这些应用程序在跨平台的基础上更容易维护,但它没有发生。

因此,工具包的选择受到许多参数的影响,许可只是其中之一。

我仍然不明白为什么Qt不是主流,因为在我看来,这是最简单,更实用的GUI工具包。

答案 4 :(得分:3)

Qt是非常全面和高质量的框架。我相信许多本来会使用wxWidgets的新项目现在将使用LGPL Qt。但是已经在使用wxWidgets的项目无疑会继续使用wxWidgets,而不是进行大规模的重写。

答案 5 :(得分:2)

我选择wxPython有两个主要原因:

  1. Boa构造函数, 它仍然是测试版产品,让我统一控制100%的过程,而PyQt确实有更好的设计师,但编辑“事件处理程序”之间没有联系。
  2. 我理想的IDE设计,创建事件,让我编辑所需的功能代码,并运行;无需“编译UIC”,无需切换编辑器,无需进入命令行。 虽然对于大规模应用而言,它很重要,但我目前的领域是快速且小规模的程序。

    1. ...许可 现在没关系,但是一旦我开始小规模地出售我的东西。

    2. 事件功能代码中的
    3. 自动完成在QTDesigner中似乎不适用于事件代码。我可能会遗漏一些东西,但上面描述的“破碎”过程会阻止它成为RAD。

答案 6 :(得分:1)

我从来没有能够设置Qt来交叉编译。我记得看过Trolltech的一些内容,说他们没有正式支持交叉编译,虽然我现在找不到它。

有许多指南和详细说明如何让Qt进行交叉编译,因此可能(可能)我做错了。

在选择框架时,我建议考虑并测试他们的交叉编译能力。