【问题标题】:GTK+ or Qt under Windows [closed]Windows 下的 GTK+ 或 Qt [关闭]
【发布时间】:2008-10-14 00:44:46
【问题描述】:

我想知道如果我需要在 WIN 和 Linux 这两个平台上使用该软件,我应该考虑哪一个?为什么?

【问题讨论】:

  • 我正在寻找更多在 Windows 下编译的难度?我知道 QT 与在 linux 下编译它非常相似。还有哪一个需要更长的时间来编写相同类型的应用程序?
  • 我的回答(由于某种原因被否决)表示在 Windows 上编译 GTK 很困难。非常耗时。我不推荐它。 Qt 是一个 2 小时的编译,通常没有问题。尽管分发使用 Visual Studio 2005+ 编译的 c++ 有其自身的问题。
  • 提问者迈克怎么了?他的头像变灰了。

标签: qt gtk


【解决方案1】:

在 Windows 上打包 GTK 及其依赖项本身就是一个全职项目。 Qt 更容易分发,因为它没有 Windows 不附带的依赖项。

Qt 从一开始就是跨平台的。 GTK 并不总是跨平台的。这样的基本决定塑造了整体设计,在我看来应该在编写任何代码之前做出。

我会发表更多评论,但我会陷入猜测,以上两件事我肯定知道。

【讨论】:

  • 有一个all-in-one installer for PyGTK 2.24。我尝试了它并且工作正常,最近的 GTK 版本似乎要好得多,并且在 Windows 上具有本机支持。是什么让它与 Windows 上的 Qt 相媲美。
  • 除非我喜欢 *nix 上的 GTK,主要是因为它的设计。
【解决方案2】:

两者都是很好的工具包,各有优缺点。

一个区别是实现语言。 Qt 使用 C++,而 GTK+ 使用 C。但是 GTK+ 绑定了许多其他语言(perl、python、C++、.NET 等),所以这不是一个大问题。

Qt 的一个优点是它提供了更广泛的内置功能(xml、数据库访问、网络编程、openGL 等)。 GTK+ 基本上所有这些东西都在它的轨道内(例如 libxml2、librsvg、libsoup、libgda 等),但它们不像 Qt 那样是一个单一的连贯包。

我个人的建议是使用gtkmm,这是 GTK+ 的 C++ 绑定。它提供了一种更舒适的面向对象的编程语言,并且提供了与使用 C 中的 GTK+ 几乎相同的本机性能。(免责声明:我为 gtkmm 做出了贡献)。

【讨论】:

  • 当然,现在 Qt 也是 LGPL。
  • 我删除了关于许可证的过时段落。
  • GTK 在 Windows 上看起来是原生的吗?它也不依赖于X服务器吗?我在 Windows 上看到了 Deluge 的一个端口,它看起来很糟糕。
【解决方案3】:

GTK+ 您几乎可以在所有编程语言中使用,包括 C++(使用 gtkmm)、C(gtk+)、C#(使用 Gtk#)、Python(PyGtk)。在 GTK 背后,您拥有 Mono Framework,它是用于跨平台目的的 .NET Framework 的出色实现。如果你想使用 Gtk#,你有一个很棒的 IDE (MonoDevelop) 和一个非常强大的 gui 设计器。您可以查看 www.mono-project.org。但仍然取决于您要构建什么,您只是在寻找 gui 工具包,还是整个框架?信号/槽背后的逻辑在 Gtk+ 和 Qt 中是相同的,但如果您使用 Gtk#,它们会在委托/事件范式中进行转换。

【讨论】:

  • 如果您正在开发商业软件,那么使用除基础库以外的任何东西(即。 GTK 或 Qt。上述任何内容都不能保证维护或可靠性。一般来说。
  • @Max PyGTK 和 GTK# 都支持 Gnome 应用程序开发,所以我希望它们能够提供良好的支持(相当于 GTK+ 本身)。
  • 那么,当你发现情况并非如此时,你一定会既沮丧又惊讶。
  • 据说mono没有积极开发。如果单声道正在消亡,那么 GTK# 也将消亡。
【解决方案4】:

我的 0.02 美元:

在过去的 4 年里,我断断续续地使用 Qt,它是我尝试过的任何工具(Win32、MFC、Borland、Java、GTK)中最喜欢的工具包。我用了几个星期的 GTK 来试用它,但并不喜欢它。这主要是因为我认为在 PC 上的 GUI 应用程序中使用 C 而不是 C++ 很尴尬……我也做嵌入式工作,而且我永远不会在 8051 上使用 C++,但对于大型 GUI 应用程序我更喜欢它.如果您打算尝试 GTK,我建议您查看GTKmm,尽管我自己从未使用过。

【讨论】:

    【解决方案5】:

    您也可以考虑使用 wxWidgets。我从未使用过其中任何一个,但是当我查看跨平台工具包时,我决定尝试使用它。

    【讨论】:

      【解决方案6】:

      它们都是很好的工具包。我会根据许可做出决定。如果您在商业产品中使用 Qt 需要支付许可证费用,而 GTK 则不需要。

      【讨论】:

      • 当然这不再是真的了。
      • 如果您在做任何商业活动,这仍然是正确的。
      【解决方案7】:

      另外三点支持 Qt:

      1. 您的项目不一定必须是 GPL; Qt GPL Exception 中还有许多其他开源许可证,包括 BSD 和 LGPL。
      2. Qt 在 Windows 上的默认主题在融入方面比 GTK 的 Wimp 主题做得更好。
      3. 如果您想在以后支持 Mac,使用 Qt 会更轻松。

      【讨论】:

      • GTK+ 在 Mac 上受支持,或者至少正在实现。
      • Mac、Windows、Linux 和其他嵌入式平台以简化形式支持 Qt
      • 来自 Gtk.org:“GTK+ 在 GNU LGPL 2.1 下获得许可,允许使用 GTK+ 开发免费和专有软件,无需任何许可费或版税。”
      【解决方案8】:

      我更喜欢 Qt。与今天一样,Qt 在更宽松的 LGPL 许可下是开源和免费的。 Qt 更好地移植到 Windows 上,并且看起来比 GTK 更原生。例如,Windows 上的 Gimp 看起来很奇怪,因为它的大多数对话框都不是 Windows 对话框。 Qt 可以使用像 Open/Save 这样的原生 Window 对话框,这使它作为一个框架感觉更好。是的,Qt 是一个框架,而不仅仅是一个 GUI Widget。不,我不是在这里宣传 Qt,因为从开发的角度来看,Qt 对于 Windows 用户来说有些陌生,例如,Qt 是基于布局的,而 MFC / .NET 是基于锚的,Qt 的布局管理器有时很奇怪。但是如果我必须在 GTK 和 Qt 之间进行选择,我会选择 Qt。另外,现在,Qt 附带了非常好的 IDE,Qt Creator,这是我现在用于所有类型项目的默认 C/C++ IDE(因为 Qt Creator 可以这样使用)。

      【讨论】:

        【解决方案9】:

        Qt 5.0 赢得了这场战争。 我不是 C++ 的忠实粉丝(我更喜欢普通的旧 C),但我必须承认 Qt 框架非常棒。 尝试使用 GTK 编写一个在 OSX、Linux、Windows(以及很快的 iOS 和 Android)上运行的具有原生外观和感觉的 GUI 程序......祝你好运!

        【讨论】:

        • 现在Flutter 是该领域的一个有趣的竞争对手,其优势在于支持 Web 作为另一个目标平台。
        【解决方案10】:

        我推荐使用 Qt,因为:

        • 它是跨平台的,涵盖了广泛的操作系统(包括移动)
        • 它是开源的,并且改进速度很快
        • 它拥有出色的 GUI 设计器和功能强大的 IDE (Qt Creator)
        • API 设计出色且易于使用
        • 它有一个很好的文档,易于阅读
        • 它有Qt翻译系统,可以让你拥有一个多语言的应用程序
        • GUI 布局系统让小部件根据布局自行调整大小,让一切变得更容易
        • QML 让您能够通过出色的图形和动画创建出色的 GUI
        • 它对网络和连接(socket、SSL、www、IPC...)有很好的支持
        • 它有 QTestLib 用于测试代码
        • 如果你不想使用 C++,它有很多语言绑定

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-10-18
          • 2014-06-08
          • 1970-01-01
          • 1970-01-01
          • 2013-10-12
          • 2010-12-25
          相关资源
          最近更新 更多