27

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

  • 您如何看待 wxWidgets 的未来,以及最近宣布的 Qt 现在在 LGPL 下发布?
  • 您认为 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

4

7 回答 7

17

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

编辑:

关于

Qt 没有本机控件但具有本机绘图功能

让我引用wxWidgets wiki 页面比较工具包

Qt 没有像 wxWidgets 那样的真正的本地端口。我们的意思是,即使 Qt 非常逼真地绘制它们,Qt 也会在每个平台上绘制自己的小部件。值得一提的是,Qt 带有用于 Mac OS X 和 Windows XP 和 Vista 的特殊样式,它们使用原生 API(Mac OS X 上的外观管理器,Windows XP 上的 UxTheme)来绘制标准的小部件原语(例如滚动条或按钮),就像任何本机应用程序。事件处理、由此产生的视觉反馈和小部件布局始终由 Qt 实现。

于 2009-01-21T15:45:21.707 回答
13

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

我在一些业余作品中使用 wxpython,但我仍然是那里的菜鸟。我认为它比 pyqt 更大的优势是在不同平台上具有原生的外观和感觉。例如,如果您正在开发 windows/linux 应用程序,这将是一个重要的问题。实际上,您可以使用“皮肤”来获得 windows-qt 应用程序的原生外观,但我不知道如何实现这一点(抱歉,我从未在 windows 上使用过 qt :D)。

于 2009-02-05T10:29:34.033 回答
8

老实说,我认为人们不会大量放弃 WxWidgets。

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

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

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

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

于 2009-01-21T09:13:48.313 回答
8

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

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

于 2009-01-21T12:57:50.827 回答
3

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

于 2009-01-21T10:12:35.823 回答
3

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

  1. Boa Constructor 仍然是一个 beta 产品,让我可以统一控制 100% 的过程,而 PyQt 确实有更好的设计器,但编辑“事件处理程序”之间没有任何联系。

我理想的 IDE 设计、创建事件,让我只编辑所需的功能代码,然后运行;无需“编译 UIC”,无需切换编辑器,无需进入命令行。虽然对于大型应用程序来说这无关紧要,但我目前的领域是快速和小型程序。

  1. 许可......现在没关系,但一旦我开始小规模出售我的东西,它就会发生。

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

于 2009-07-03T12:31:50.427 回答
2

我永远无法将 Qt 设置为交叉编译。我记得看到奇趣科技说他们不正式支持交叉编译,虽然我现在找不到。

有很多指南和详细说明如何让 Qt 进行交叉编译,所以它可能(很可能)我做错了什么。

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

于 2009-10-20T04:10:12.390 回答